使用 libxml 解析文件时从 xml 文件中删除注释
Delete comments from xml file while parsing it using libxml
以下是 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 文件中完全删除注释 line/node,它应该如下所示:
<?xml version="1.0"?>
<story>
<info>
<author>Abc Xyz</author>
<keyword>example keyword</keyword>
</info>
</story>
我还参考了 libxml 文档,但这对 XML 文件中的 "comment/s" 没有多大帮助。
您可以在解析 xml 时使用 NodeType()
并检查每个节点是否是注释(8 表示注释,请参阅此处:http://xmlsoft.org/xmlreader.html#Extracting),然后使用 xmlUnlinkNode()
和 xmlFreeNode()
.
我尝试了一种不同的方式,它奏效了。看起来使用 xmlreader
来修改 xml 不会有太大帮助,相反我做了 xmlReadMemory()
,然后在解析时做了以下检查:
if(node->type == XML_COMMENT_NODE){ //node is of type xmlNodePtr
xmlUnlinkNode(node);
xmlFreeNode(node);
}
最后xmlDocDumpFormatMemory()
将修改后的xml存入xmlbuffer
。