日期:2014-05-20  浏览次数:20470 次

使用XPATH读取 DOMDocument 节点内容
XML文件内容是这样的
<?xml   version= "1.0 "?>
<soap:Envelope   xmlns:soap= "http://www.w3.org/2003/05/soap-envelope "   xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance "   xmlns:xsd= "http://www.w3.org/2001/XMLSchema ">
<soap:Body> <RegisterPersonMemberResponse   xmlns= "http://www.fztnet.com.cn/RegisterService ">
<RegisterPersonMemberResult> <IsSuccessful> true </IsSuccessful> <Status> 0 </Status>
</RegisterPersonMemberResult> </RegisterPersonMemberResponse>
</soap:Body> </soap:Envelope>

我使用这个XPATH表达式来求Status的值。/Envelope/Body/RegisterPersonMemberResponse/RegisterPersonMemberResult/Status

但会出错。得到的空结点。
不知为什么。。谢谢 

xmlDoc.setProperty( "SelectionLanguage ",   "XPath ");
var   path   =   "/Envelope/Body/RegisterPersonMemberResponse/RegisterPersonMemberResult/Status ";
var   node   =   xmlDoc.selectSingleNode(path);

------解决方案--------------------
需要使用XmlNamespaceManager

------解决方案--------------------
xmlDoc.setProperty "SelectionNamespaces ", "your xml namespace ");
xmlDoc.setProperty( "SelectionLanguage ", "XPath ");

------解决方案--------------------
http://support.microsoft.com/kb/280457/zh-cn
------解决方案--------------------
<SCRIPT language= "javascript "> <!-- var str = " <?xml version=\ "1.0\ "?> "+ " <soap:Envelope xmlns:soap=\ "http://www.w3.org/2003/05/soap-envelope\ " xmlns:xsi=\ "http://www.w3.org/2001/XMLSchema-instance\ " xmlns:xsd=\ "http://www.w3.org/2001/XMLSchema\ "> "+ " <soap:Body> <RegisterPersonMemberResponse xmlns=\ "http://www.fztnet.com.cn/RegisterService\ "> "+ " <RegisterPersonMemberResult> <IsSuccessful> true </IsSuccessful> <Status> 0 </Status> "+ " </RegisterPersonMemberResult> </RegisterPersonMemberResponse> "+ " </soap:Body> </soap:Envelope> "; var dom = new ActiveXObject( "MSXML2.DomDocument "); dom.loadXML(str); var path = "/soap:Envelope/soap:Body/RegisterPersonMemberResponse/RegisterPersonMemberResult/Status "; dom.setProperty( "SelectionNamespaces ", "xmlns:soap= 'http://www.w3.org/2003/05/soap-envelope ' "); var node = dom.selectSingleNode(path); if(node != null) alert(node.text); else alert( "无 "); //--> </SCRIPT>
------解决方案--------------------
<script>
var xmldom = new ActiveXObject( "Msxml2.DOMDocument ")
xmldom.loadXML( " <?xml version= '1.0 '?> <soap:Envelope xmlns:soap= 'http://www.w3.org/2003/05/soap-envelope ' xmlns:xsi= 'http://www.w3.org/2001/XMLSchema-instance ' xmlns:xsd= 'http://www.w3.org/2001/XMLSchema '> <soap:Body> <RegisterPersonMemberResponse xmlns= 'http://www.fztnet.com.cn/RegisterService '> <RegisterPersonMemberResult> <IsSuccessful> true </IsSuccessful> <Status> 0 </Status> </RegisterPersonMemberResult> </RegisterPersonMemberResponse> </soap:Body> </soap:Envelope> ")

xmldom.setProperty( "SelectionLanguage ", "XPath ")
xmldom.setProperty( "SelectionNamespaces ", "xmlns:soap= 'http://www.w3.org/2003/05/soap-envelope ' xmlns:xsi= 'http://www.w3.org/2001/XMLSchema-instance ' xmlns:xsd= 'http://www.w3.org/2001/XMLSchema ' xmlns:a= 'http://www.fztnet.com.cn/RegisterService ' ")