上下文:Windows 7、JScript、Adwords v201309
给定以下(经过修改的)XML,我如何使用 XPath 遍历budgetId?
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<ResponseHeader xmlns="https://adwords.google.com/api/adwords/cm/v201309">
<requestId>feeddcaa866554433222211000000000</requestId>
<serviceName>CampaignService</serviceName>
<methodName>get</methodName>
<operations>1</operations>
<responseTime>29</responseTime>
</ResponseHeader>
</soap:Header>
<soap:Body>
<getResponse xmlns="https://adwords.google.com/api/adwords/cm/v201309">
<rval>
<totalNumEntries>1</totalNumEntries>
<Page.Type>CampaignPage</Page.Type>
<entries>
<id>134557899</id>
<name>Test Search</name>
<budget>
<budgetId>123346677</budgetId>
<name>Test Search</name>
<period>DAILY</period>
<amount>
<ComparableValue.Type>Money</ComparableValue.Type>
<microAmount>1000000</microAmount>
</amount>
</budget>
</entries>
</rval>
</getResponse>
</soap:Body>
</soap:Envelope>
到目前为止,我有以下脚本
var oXML = new ActiveXObject('Msxml2.DOMDocument.6.0');
oXML.async = false;
oXML.validateOnParse = false;
oXML.setProperty("SelectionLanguage", "XPath");
var ns = 'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"';
oXML.setProperty( "SelectionNamespaces", ns );
oXML.load("response.xml");
var x = oXML.selectSingleNode("/soap:Envelope/soap:Body");
//var x = oXML.selectSingleNode("//soap:Envelope/soap:Body/getResponse/rval/entries/budget/budgetId");
WScript.Echo(x.nodeName, x.nodeValue);
就遍历而言,这可以正常工作,/soap:Envelope/soap:Body
但是如果我尝试走得更远,例如/soap:Envelope/soap:Body/getResponse
,(或者甚至/soap:Envelope/soap:Body/getResponse/rval/entries/budget/budgetId
如下所示),我会得到空值。