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
.
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
.
Set nodlist = xmlDoc.selectNodes("/Book/Price")
XPath 是 CAse senSitiVe ——在提供的 XML 文档中没有命名Book
或节点。Price
因此上述方法调用必须返回一个空的XmlNodeList
。
你要:
Set nodlist = xmlDoc.selectNodes("/book/price")
1/正如JP在 OP 的评论中发现的那样,您的第二个price
节点未正确关闭。
该selectNodes()
方法使用 XPath 选择器(语法、教程),对吗?
2/正如Dimitre所说,XPath 区分大小写,因此/Book/Price
如果您的实际元素是book
and则无效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