以下代码适用于XML 1,但不会读取XML 2中的行(添加ROOT)。你知道为什么吗?
Set xmlDoc = CreateObject("Msxml2.DOMDocument")
xmlDoc.async="false"
xmlDoc.setProperty "SelectionLanguage", "XPath"
xmlDoc.load("test.xml")
set nodes=xmlDoc.SelectNodes("//customer")
for i=0 to nodes.length-1
set node = nodes(i)
set company = node.selectSingleNode("company")
msgbox company
next
XML 1:
<?xml version="1.0" encoding="UTF-8"?>
<customers>
<customer>
<name>ABCars</firma>
</customer>
</customers>
XML 2:
<?xml version="1.0" encoding="UTF-8"?>
<ROOT xmlns="http://www.something.com ">
<customers>
<customer>
<name>ABCars</firma>
</customer>
</customers>
</ROOT>
答案 0 :(得分:2)
这是因为您的第二个文档具有默认命名空间。 XPath是默认名称空间的时髦。您需要添加名称空间前缀(例如xmlns:ns0="http://www.something.com"
然后使用该前缀(ns0:ROOT
,ns0:customers
等),或重构您的XPath以使用local-name()
功能:
set nodes=xmlDoc.SelectNodes("//*[local-name()='customer']")
您还必须更改selectSingleNode:
set company = node.selectsingleNode("*[local-name()='company']")
如果您在此网站上搜索“XPath默认命名空间”,您会发现很多相关问题。