我正在 Ubuntu 上构建一个项目,其中我使用 TinyXPath 库和 TinyXml 来解析以下 xml:
<nodes>
<node attribute1="1" attribute2="2" />
<node attribute1="2" attribute2="3" />
...
<node attribute1="10" attribute2="11" />
</nodes>
要找出包含的节点条目数,我使用:
TinyXPath::i_xpath_int( xml_root,"count(/nodes/node)")
显然,在一个对象中使用这个函数调用会返回实际的节点数,10;但是在另一个对象(不同的类类型)中使用它,它总是返回 0。我检查了 xml_root 在这两种情况下是否是同一个对象,并且两个对象具有相同的地址。打印内容给了我相同的xml。
相反,如果我使用 TinyXML,我会得到正确的结果,甚至可以访问所有属性并获得正确的结果。以下代码给出了正确的 no_nodes:
for(node = xml_root->FirstChild(); node; node = node->NextSibling())
no_nodes++;
奇怪的部分来了。如果我在 Windows 7 上构建这个项目,它工作得很好。函数调用总是返回正确数量的节点。有没有人遇到过这种问题?
PS:我知道我没有就这个问题给出很多细节,但这是一个巨大的项目,我需要几天时间来解释它。所以这只是在黑暗中的一个镜头。