2014-09-19 3 views
0

У меня есть XML-документзначение XElement всегда нуль

<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"); 

Почему член всегда Null?

ответ

2

Элемент Member относится к пространству имен urn:abc:xyz. Попробуйте следующее:

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

Другой способ получить элемент Член является:

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