XElement值始终为null

时间:2014-09-19 15:47:10

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

我有一个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");

为什么会员总是空无一人?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

获取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);