Xpath MS XML selectNodes方法未返回预期的节点
VB6(XML文件)中的代码 我的Xml文件如下Xpath MS XML selectNodes方法未返回预期的节点,xpath,vb6,xml-parsing,Xpath,Vb6,Xml Parsing,VB6(XML文件)中的代码 我的Xml文件如下 <book> <name>x1</name> <price>1<price> <name>x2</name> <name>x3</name> <price>2<price> </book> 它仅选择1个节点,其余节点将被忽略 我想得到所有名为price1/的节点,
<book>
<name>x1</name>
<price>1<price>
<name>x2</name>
<name>x3</name>
<price>2<price>
</book>
它仅选择1个节点,其余节点将被忽略
我想得到所有名为price
1/的节点,正如在OP的评论中所指出的,您的第二个price
节点没有正确关闭
selectNodes()
方法使用的是XPath选择器(,),对吗
2/如上所述,XPath是区分大小写的,因此如果实际元素是Book
和Price
,则/Book/Price
无效。它应该是/book/price
但是,如果第一个price
节点返回给您,则很可能您的选择器实际上是小写的/book/price
,并且您的问题可能来自第二个price
节点,该节点未正确关闭
3/最后,您确定book
确实是XML的根节点吗?你没有书店家长之类的吗
如果选择器的形式为/book/price
(首先只有一个斜杠),则它是一个绝对路径,那么它应该为所选书籍
选择所有price
元素,但只有给定的书籍
是(唯一一个)根节点(显然,您的文档中没有其他书籍
,因为您不能在一个文档中有多个根,而且根本没有父文档)
试试这个:
book/price
应返回文档所有book
节点的所有price
节点
price
应返回整个文档中的所有price
节点,无论它们是父节点还是父节点
如果您有另一个根目录,如书店
,或库
,并希望使用绝对路径,请尝试:
/bookstore/book/price
(或/library/book/price
,或任何实际根节点)
此外,您还可以尝试使用类似的方式相对访问节点,具体取决于您在XML树中的位置:
//书籍/价格
//价格
XPath区分大小写——在提供的XML文档中没有名为Book
或Price
的节点。因此,上述方法调用必须返回空的XmlNodeList
你想要:
Set nodlist = xmlDoc.selectNodes("/book/price")
坦率地说,对于给定的XML示例,没有名为Book
的元素,也没有名为Price
的元素,因为XML名称与大小写有关。在示例中,有名为Price
的元素作为名为Book
的根元素的子元素,因此对于XPath,您需要选择两个元素n因此,对于给定的XML示例,路径/Book/Price
应选择一个空节点集,并选择节点(“/Book/Price”)
应返回一个长度为0的空节点列表。如果您得到不同的结果,则您正在处理不同的XML文档。@chotai.mit,那么,您是否尝试过任何建议?@MartinHonnenprice
节点也未正确关闭。
Set nodlist = xmlDoc.selectNodes("/Book/Price")
Set nodlist = xmlDoc.selectNodes("/book/price")