根节点不在VBScript中工作的XML节点

时间:2015-03-30 21:05:48

标签: xml vbscript

以下代码适用于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>

1 个答案:

答案 0 :(得分:2)

这是因为您的第二个文档具有默认命名空间。 XPath是默认名称空间的时髦。您需要添加名称空间前缀(例如xmlns:ns0="http://www.something.com"然后使用该前缀(ns0:ROOTns0:customers等),或重构您的XPath以使用local-name()功能:

set nodes=xmlDoc.SelectNodes("//*[local-name()='customer']")

您还必须更改selectSingleNode:

set company = node.selectsingleNode("*[local-name()='company']")

如果您在此网站上搜索“XPath默认命名空间”,您会发现很多相关问题。