比较 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 库)的主要内容,如果未能解决你的问题,请参考以下文章