首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XmlDocument.SelectSingleNode

XmlDocument.SelectSingleNode
EN

Stack Overflow用户
提问于 2015-03-05 13:07:23
回答 2查看 115关注 0票数 0

我有一个soap xml消息,并且需要从给定的soap xml中获取单个节点值

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://tews6/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/envelope/" >
<soapenv:Body>
<testResult>
<Status version="6.0" >
<NNO>277982b4-2917a65f-13ffb8c0-b09751f</NNO>
</Status>
<ProfileTab>
<Email>abc@gmail.com</Email>
<Name>abc</Name>
</Profile>
</testResult></soapenv:Body></soapenv:Envelope>

我需要获取电子邮件节点的值。我使用了下面的代码

代码语言:javascript
复制
 rootNode = "soapenv:Envelope/soapenv:Body/ProfileTab/Email";

 var nsmgr = new XmlNamespaceManager(document.NameTable);
 nsmgr.AddNamespace("xsl", "http://www.w3.org/1999/XSL/Transform");
 nsmgr.AddNamespace("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");

 node = document.SelectSingleNode(rootNode,nsmgr);

它正在返回null。

EN

回答 2

Stack Overflow用户

发布于 2015-03-05 13:26:31

您可以使用以下代码。

代码语言:javascript
复制
var rootNode = "soapenv:Envelope/soapenv:Body/tews6:testResult/tews6:ProfileTab/tews6:Email";

var nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("tews6", "http://tews6/wsdl");
nsmgr.AddNamespace("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");

var node = doc.SelectSingleNode(rootNode, nsmgr);
票数 0
EN

Stack Overflow用户

发布于 2015-03-05 15:19:56

试试这个:

代码语言:javascript
复制
string xml="xml"; 
XDocument doc = XDocument.Parse(xml);
 XNamespace bodyNameSpace ="http://schemas.xmlsoap.org/soap/envelope/";
 var bodyXml = from _e in doc.Descendants(bodyNameSpace + "Body")
                          select _e;
 if (bodyXml.Elements().Count() == 0)
            {
                return;
            }
var email = from _e in bodyXml.First()Descendants("Email")
                                      select _e;
if(email.Count()==1)
{
    string emailAddress=email.First().Value;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28870407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档