【问题标题】: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);