如何从LINQ to XML中的XElement读取特定元素值

Hap*_*ppy 6 xelement linq-to-xml c#-4.0

我有一个XElement像这样的内容.

<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>
Run Code Online (Sandbox Code Playgroud)

我将如何读取Status元素内部的值?

我试过 XElement stats = myXel.Descendants("Status").SingleOrDefault(); 但是返回null.

Pab*_*meo 5

如果myXel已经是响应XElement那么它将是:

var status = myXel.Elements().Where(e => e.Name.LocalName == "Status").Single().Value;
Run Code Online (Sandbox Code Playgroud)

您需要使用LocalName来忽略名称空间.


Mar*_*nen 5

XElement response = XElement.Load("file.xml"); // XElement.Parse(stringWithXmlGoesHere)
XNamespace df = response.Name.Namespace;
XElement status = response.Element(df + "Status");
Run Code Online (Sandbox Code Playgroud)

应该足以访问Status子元素。如果您希望该元素的值作为字符串,则执行例如

string status = (string)response.Element(df + "Status");
Run Code Online (Sandbox Code Playgroud)