使用XPATH读取 DOMDocument 节点内容

haiwangstar 2007-01-24 09:15:28
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);
...全文
952 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
haiwangstar 2007-01-24
  • 打赏
  • 举报
回复
多谢孟子。这回可以了。看来XML的东西我还要好好补补。。看来每一个节点都要指定名空间才行的。  。谢谢你们!!
haiwangstar 2007-01-24
  • 打赏
  • 举报
回复
多谢大家的帮助。道理我已经看懂了。可是得到的结点仍为null..我刚刚写的代码同上面幕白兄几乎是一模一样的。。XML文本格式同上面的也是完全一样的。我真是搞不懂为什么。。。谢谢 !

var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.5.0");
alert(xmlhttp.responseXML.xml);
xmlDoc.loadXML(xmlhttp.responseXML.xml);
xmlDoc.setProperty("SelectionLanguage", "XPath");
xmlDoc.setProperty("SelectionNamespaces", 'xmlns:soap="http://www.w3.org/2003/05/soap-envelope"');
var path = "/soap:Envelope/soap:Body/RegisterPersonMemberResponse/RegisterPersonMemberResult/Status";
var node = xmlDoc.selectSingleNode(path);
var status = node.nodeValue;
孟子E章 2007-01-24
  • 打赏
  • 举报
回复
<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'")

var path = "/soap:Envelope/soap:Body/a:RegisterPersonMemberResponse/a:RegisterPersonMemberResult/a:Status";
var node = xmldom.selectSingleNode(path);
alert(node.text)
</script>
cpp2017 2007-01-24
  • 打赏
  • 举报
回复
<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>
孟子E章 2007-01-24
  • 打赏
  • 举报
回复
http://support.microsoft.com/kb/280457/zh-cn
真相重于对错 2007-01-24
  • 打赏
  • 举报
回复
xmlDoc.setProperty"SelectionNamespaces", "your xml namespace");
xmlDoc.setProperty("SelectionLanguage", "XPath");
haiwangstar 2007-01-24
  • 打赏
  • 举报
回复
是用JS来调用的。
haiwangstar 2007-01-24
  • 打赏
  • 举报
回复
但我用的是XML SDK 中的  DOM。不是.NET类库中的那个。该怎么做? 还请明示。谢谢 !!
孟子E章 2007-01-24
  • 打赏
  • 举报
回复
需要使用XmlNamespaceManager

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧