1

VB6中的代码(XML文件)

我的xml文件如下

<book>
    <name>x1</name>
    <price>1<price>
    <name>x2</name>
    <name>x3</name>
    <price>2<price>
</book>

根节点是书

Set nodlist = xmlDoc.selectNodes("/Book/Price")

它仅选择 1 个节点,其余节点被忽略

我想让所有节点命名为price.

4

2 回答 2

2
Set nodlist = xmlDoc.selectNodes("/Book/Price")

XPath 是 CAse senSitiVe ——在提供的 XML 文档中没有命名Book或节点。Price因此上述方法调用必须返回一个空的XmlNodeList

你要:

Set nodlist = xmlDoc.selectNodes("/book/price")
于 2012-06-09T14:25:08.877 回答
1

1/正如JP在 OP 的评论中发现的那样,您的第二个price节点未正确关闭。

selectNodes()方法使用 XPath 选择器(语法教程),对吗?

2/正如Dimitre所说,XPath 区分大小写,因此/Book/Price如果您的实际元素是bookand则无效price。应该是/book/price

但是,如果将第一个price节点返回给您,则很可能您的选择器实际上是小写的/book/price,并且您的问题很可能来自price未正确关闭的第二个节点。

3/最后,你确定这真的book是你的 XML的根节点吗?你没有父母之类的吗?bookstore

如果您的选择器具有形式/book/price(一开始只有一个斜杠),它是一个绝对路径,那么它应该选择确实选择price的所有元素book,但只有给定book的是(只有非常单一的)根节点(没有其他book显然,在您的文档中,因为您不能在一个文档中有多个根,并且根本没有父)。

试试这个:

  • book/price应该为文档price的所有节点返回所有节点book
  • price应该返回所有price节点,无论它们是整个文档中的父节点

如果您有另一个根,例如bookstore,或者library想要使用绝对路径,请尝试:

  • /bookstore/book/price(或者/library/book/price,或者你的实际根节点是什么)

此外,您可以尝试使用类似的方式访问的节点,具体取决于您在 XML 树中的位置或位置:

  • //book/price
  • //price
于 2012-06-09T10:01:12.823 回答