Xpath MS XML selectNodes方法未返回预期的节点

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/的节点,

VB6(XML文件)中的代码

我的Xml文件如下

<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,那么,您是否尝试过任何建议?@MartinHonnen
price
节点也未正确关闭。
Set nodlist = xmlDoc.selectNodes("/Book/Price")
Set nodlist = xmlDoc.selectNodes("/book/price")