比较 C 中的两个 XMLNode(libxml 库)

Posted

技术标签:

【中文标题】比较 C 中的两个 XMLNode(libxml 库)【英文标题】:Compare two XMLNodes in C (libxml library) 【发布时间】:2012-12-07 11:13:15 【问题描述】:

我正在使用libxml library 在 C 中解析一些 xml 文件。我想比较两个 xmlnode 以查看它们是否包含相同的数据。有什么功能可以做到吗?

【问题讨论】:

【参考方案1】:

libxml API docs 似乎是合理的,并建议 xmlBufGetNodeContent 和 xmlBufContent 可以做你想做的事。

xmlNode node1, node2;
......
xmlBuf buf;
xmlChar* content1 = NULL;
xmlChar* content2 = NULL;
if (xmlBufGetNodeContent(&buf, &node1) == 0) 
    content1 = xmlBufContent(&buf);

if (xmlBufGetNodeContent(&buf, &node2) == 0) 
    content2 = xmlBufContent(&buf);

if (strcmp(content1, content2) == 0) 
    /* nodes match */

【讨论】:

【参考方案2】:

我认为 api 调用 xmlBufGetNodeContent 和 xmlBufContent 不再有效。 由于这些调用中涉及的数据类型 - xmlBufPtr 不再可用,至少不可用 libxml2 2.7.6 我使用了不同的 API 调用 xmlNodeDump 或 xmlNodeGetContent。希望它可以帮助其他有类似问题的人。

【讨论】:

以上是关于比较 C 中的两个 XMLNode(libxml 库)的主要内容,如果未能解决你的问题,请参考以下文章

XmlNode和XmlElement区别

C# XmlNode 具有祖先类型

XmlNode与XmlElement的区别总结

用标签包装 XmlNode

读取 xmlnode 子标签值

从 XmlNode 中提取“文本”值的最佳方法?