Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl LibXML:注释掉一块元素_Perl_Libxml2 - Fatal编程技术网

Perl LibXML:注释掉一块元素

Perl LibXML:注释掉一块元素,perl,libxml2,Perl,Libxml2,是否有添加/初始化注释的方法,例如$dom->CreateComent。。。这样它就注释出了整个xml标记块。基本上我想关闭评论之间的内容。 例如,它看起来是这样的: <TT> <AA>keep</AA> <!-- comment to blocking <BB>hideme1</BB> <CC>hideme2</CC>

是否有添加/初始化注释的方法,例如$dom->CreateComent。。。这样它就注释出了整个xml标记块。基本上我想关闭评论之间的内容。 例如,它看起来是这样的:

      <TT>
        <AA>keep</AA>
        <!-- comment to blocking
        <BB>hideme1</BB>
        <CC>hideme2</CC>
        -->
        <DD>d's content is good</DD>
      </TT> 
实际上,这个问题是我试图找出一种方法来标记/标记/识别xml文件的更改,以支持新的客户端软件功能的一个先兆,但是能够在客户端需要返回到以前的软件版本的罕见情况下删除/撤销这些xml更改。不,我不能简单地指向原始xml文件,因为允许客户端对现有节点文本值进行微小修改。这一切都将通过perl脚本和LibXML的核心模块来控制,我不能使用客户端没有的模块

因此,基本上我已经确定了三种可能的xml更改类型,它们是新客户端软件功能的结果: 1.添加新元素节点通常用于支持新的软件功能 2.删除元素节点或元素块是很少见的,但这种可能性永远不会降低 3.很少更改节点文本值,但新sw可能需要新值

对于这三种类型,客户机都需要能够撤销更改。我想使用的一件事是属性,因为现有的xml文件不使用它们。例如,对于添加更改类型,我可以包括一个类似“ADD=swversion4.1”的atribute。这样,如果需要删除它,我只需要让perl脚本找到这些属性字符串,然后使用LibXML方法删除它们。CHANGE-CHANGE-type也是一样——我可以使用CHG=newvalue\u oldvalue这样的属性,然后再次使用纯perl或LibXML根据属性的内容切换回值。但是,删除更改类型给了我一个问题,就像其他类型一样,哈哈!。我希望能够将已删除的行单独保留在xml文件中,以便在软件在某个后期版本中回退时,perl脚本最终能够清理/删除它们


我知道这是很多,我对LibXML不熟悉,但对perl不熟悉。我只是想知道你们中是否有人对如何去做有任何想法,或者看到过类似于这种要求的东西。。。如果您能给我任何建议,我将不胜感激!谢谢…

1查找节点的XML序列化。2创建值为该序列化的注释。3在文档中插入注释。4删除转换为注释的节点。@ikegami-很酷,我想我理解。。。并作为注释插入到我要注释掉的第一个节点的父节点。。。还是给它上面的兄弟姐妹?哪种方式,或者我必须考虑这两种类型?我将使用$$-> RePATENODE $ $NEW或$CHARE-PARTRONTRON->插入式$FIG,$$。