VB6中的代码(XML文件)
我的Xml文件如下
<book>
<name>x1</name>
<price>1<price>
<name>x2</name>
<name>x3</name>
<price>2<price>
</book>
Root Node is Book
Set nodlist = xmlDoc.selectNodes("/Book/Price")
仅选择1个节点,忽略休息
我希望得到名为price
的所有节点。
答案 0 :(得分:2)
Set nodlist = xmlDoc.selectNodes("/Book/Price")
XPath是CAse senSitiVe - 提供的XML文档中没有名为Book
或Price
的节点。因此,上述方法调用必须返回空的XmlNodeList
。
你想:
Set nodlist = xmlDoc.selectNodes("/book/price")
答案 1 :(得分:1)
1 / 正如JP在OP的评论中指出的那样,您的第二个price
节点未正确关闭。
selectNodes()
方法正在使用XPath选择器(syntax,tutorial),对吗?
2 / 正如Dimitre所述,XPath区分大小写,因此如果您的实际元素为/Book/Price
和book
,则price
无效。它应该是/book/price
。
但是,如果第一个price
节点返回给您,那么您的选择器很可能实际上是低得多的/book/price
,并且您问题的概率来自第二个{{1}没有正确关闭的节点。
3 / 最后,您确定price
节点你有没有book
父母或其他什么?
如果您的选择器的格式为bookstore
(首先只有一个斜杠),那么它是一个绝对路径,那么它应该选择所选的所有/book/price
个元素price
确实,但只有给定的book
(只有非常单一的)根节点(显然没有其他book
,因为你不能在一个文档中有几个根,而根本没有父文件。)
试试这个:
book
应返回文档的所有book/price
个节点的所有price
个节点book
应返回所有price
个节点,无论它们是整个文档中的父节点如果您有其他根,例如price
或bookstore
,并且想要使用绝对路径,请尝试:
library
(或/bookstore/book/price
,或任何您的实际根节点)此外,您可以尝试使用类似的东西访问相对到您的节点,具体取决于您在XML树中的位置:
/library/book/price
//book/price