c# - 如何从返回的基于 Soap 的 XML 消息中获取元素值

标签 c# xml

我要获取基于 Soap 的 retuned XML 的元素值,如下所示。

XML 文件:

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <SendToDSSResponse xmlns="http://tempuri.org/">
      <SendToDSSResult>
        <RC>0</RC>
        <RCD></RCD>
        <PCKT>
          <IDNO>1212</IDNO>
          <IDTYPE>051</IDTYPE>
          <NOBOX>121216</NOBOX>
          <NAME>James</NAME>
       </PCKT>
      </SendToDSSResult>
    </SendToDSSResponse>
  </soap:Body>
</soap:Envelope>

现在我想获取 IDNO、NoBox 和 Name 的值。我正在尝试使用下面的代码来获取值,但它会引发异常。获取元素值的正确方法是什么?

C#代码:

var xDoc = XDocument.Parse(cleanXml); //OR XDocument.Load(filename)      
string Name = xDoc.Descendants("Name").First().Value;

最佳答案

我认为你应该添加 XNamespace 然后你可以从节点或节点下的标签中读取特定的值,在你的 ConsoleApplication 中试试这个演示:

XDocument doc = XDocument.Load("XMLFile1.xml");
var result = doc.Descendants(XNamespace.Get("http://tempuri.org/")+"NAME").First();
Console.WriteLine(result.Value);

关于c# - 如何从返回的基于 Soap 的 XML 消息中获取元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19739968/

相关文章:

c# - KeyNotFoundException 与在线数据库

xml - 用grails解析XML的问题

c# - 在 C# 中具有授权的 HTTPS 客户端

c# - 跨页面传递值 ASP.net

java - XML 映射到 Java 对象的库,而不必在编译时从 xsd 生成源代码?

css - 获取 xslt 中的最后一项

Java、XML,还是两者兼而有之?

C# XmlSerializer 修剪空格

c# - 分离 ldap 连接字符串的最佳方法是什么?

c# - 如何从 [Flag] 枚举属性中检索值?