2012-06-01 2 views
4

У меня есть XElement который имеет такой контент.Как прочитать значение определенного элемента из XElement в LINQ to XML

<Response xmlns="someurl" xmlnsLi="thew3url"> 
    <ErrorCode></ErrorCode> 
    <Status>Success</Status> 
    <Result> 
     <Manufacturer> 
      <ManufacturerID>46</ManufacturerID> 
      <ManufacturerName>APPLE</ManufacturerName> 
     </Manufacturer> 
     //More Manufacturer Elements like above here 
    </Result> 
</Response> 

Как я буду читать значение внутри Status элемента?

Я пробовал XElement stats = myXel.Descendants("Status").SingleOrDefault(); Но это возвращает null.

ответ

2
XElement response = XElement.Load("file.xml"); // XElement.Parse(stringWithXmlGoesHere) 
XNamespace df = response.Name.Namespace; 
XElement status = response.Element(df + "Status"); 

должно быть достаточно для доступа к дочернему элементу Status. Если вы хотите, чтобы значение этого элемента было строкой, то, например,

string status = (string)response.Element(df + "Status"); 
2

Если myXel уже есть ответ XElement тогда было бы:

var status = myXel.Elements().Where(e => e.Name.LocalName == "Status").Single().Value; 

Вы должны использовать LocalName игнорировать пространства имен.

Смежные вопросы