【问题标题】:XElement value is always nullXElement 值始终为空
【发布时间】:2014-09-19 15:47:10
【问题描述】:

我有一个 XML 文档

<Root>
<Member xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:abc:xyz">
    <ID>123</Id>    
    <Name>
      <First>ABC</First>
      <Last>XYZ</Last>
    </Name>
    <DateOfBirth>1900-01-01</DateOfBirth>
    <Gender>Male</Gender>
  </Member>
  </Root>

这是我的代码

XElement xmlRootElement = xdoc.Element("Root");
var x = xmlRootElement.Element("Member");

为什么会员总是空的?

【问题讨论】:

    标签: xml xml-serialization linq-to-xml


    【解决方案1】:

    Member 元素属于 urn:abc:xyz 命名空间。 请尝试以下操作:

    XNamespace ns = "urn:abc:xyz";
    var x = xmlRootElement.Element(ns + "Member");
    

    【讨论】:

      【解决方案2】:

      获取Member元素的另一种方式是:

      var elem = XElement.Parse("<Root><Member xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"urn:abc:xyz\"><ID>123</ID><Name><First>ABC</First><Last>XYZ</Last></Name><DateOfBirth>1900-01-01</DateOfBirth><Gender>Male</Gender></Member></Root>");
      var ns = elem.XPathSelectElement("/*").GetDefaultNamespace();
      var x = elem.Element(ns + "Member");
      Console.WriteLine(x.CreateNavigator().OuterXml);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-18
        • 2010-12-09
        • 1970-01-01
        • 2021-08-22
        • 2018-03-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多