使用MSXML中的selectSingleNode
获取XML节点我试图在下面的XML中获取title字段,但不能
XML
<?xml version="1.0"?>
<rg:Group xmlns:rg="urn:mpeg:mpeg21:2003:01-REL-R-NS">
<r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" Id="{b11f85f6-59c1-4c17-9c22-d951ac7257}"><r:title>XrML 2.1 License</r:title>
(some fields)
</r:license>
</rg:Group>
以下是我的XML代码
var objXML = new ActiveXObject("MSXML2.DOMDocument.6.0");
objXML.async = false;
objXML.load("\\license.xml");
var ns="xmlns:rg='urn:mpeg:mpeg21:2003:01-REL-R-NS' +"xmlns:r='urn:mpeg:mpeg21:2003:01-REL-R-NS'"
objXML.setProperty("SelectionNamespaces", ns);
objXML.setProperty("SelectionLanguage", "XPath");
WScript.Echo("ns:(after setProperty())\n "+objXML.getProperty("SelectionNamespaces"));
var node = objXML.selectSingleNode("//Group/license/title");
WScript.Echo("root: \n"+node.text); //returns null
答案 0 :(得分:0)
Xpath表达式必须(否则注册名称空间毫无意义):
//r:Group/r:license/r:title
此外,您只需注册一个名称空间,因为前缀"rg"
和"r"
碰巧绑定到同一名称空间。
您注册的前缀不需要与XML文档中使用的任何前缀相同 - 它可以是"x"
,然后表达式为:
//x:Group/x:license/x:title