【问题标题】:Delete comments from xml file while parsing it using libxml使用 libxml 解析时从 xml 文件中删除注释
【发布时间】:2017-12-23 05:36:47
【问题描述】:

以下是 XML 文件,其中一个节点(即<date>)被注释。

<?xml version="1.0"?>
<story>
  <info>
    <author>Abc Xyz</author>
    <!--<date>June 2, 2017</date> -->
    <keyword>example keyword</keyword>
  </info>
</story>

我想要的是使用 libxml 库从 XML 文件中完全删除该注释行/节点,它应该如下所示:

<?xml version="1.0"?>
<story>
  <info>
    <author>Abc Xyz</author>
    <keyword>example keyword</keyword>
  </info>
</story>

我还参考了 libxml 文档,但这对 XML 文件中的“comment/s”没有多大帮助。

【问题讨论】:

    标签: c++ xml-parsing libxml2


    【解决方案1】:

    您可以在解析 xml 时使用 NodeType() 并检查每个节点是否是注释(8 表示注释,请参见此处:http://xmlsoft.org/xmlreader.html#Extracting),然后使用 xmlUnlinkNode()xmlFreeNode() 将其删除。

    【讨论】:

      【解决方案2】:

      我尝试了一种不同的方式,它奏效了。看起来使用xmlreader 来修改xml 并没有多大帮助,而是我做了xmlReadMemory(),然后在解析时做了以下检查:

      if(node->type == XML_COMMENT_NODE){ //node is of type xmlNodePtr
          xmlUnlinkNode(node);
          xmlFreeNode(node);
      }
      

      最后xmlDocDumpFormatMemory()将修改后的xml存储在xmlbuffer中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-28
        • 1970-01-01
        • 2012-08-17
        • 1970-01-01
        • 2012-07-08
        相关资源
        最近更新 更多