ASP.NET LINQ to XML 如何达到 node/element 只给出名字?

ASP.NET LINQ to XML how to reach an node/element just giving the name?

我想获取以下代码中的粗体元素:_connectionId 和 return。

有两个 return 标签,我需要获取 "return" 和“_connectionid”的相对值

<Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  <Body>
       <login_newResponse xmlns=\"http:XXXXXXXXXXXX.wsdl"> 
          <return>
              <_**connectionid**>@@@@@@@@@@@@@AHT@Q@@@@@D@GR@SUEF</_**connectionid**>
              <**return**>CONNESSIONE AVVENUTA</**return**> 
          </return> 
       </login_newResponse> 
    </Body> 
 </Envelope>

我试过这个代码

XDocument XML = XDocument.Load(s);
var lv1s = from lv1 in XML.Descendants("Body")
           select lv1.Nodes();

我获得了 XML 个字符串的列表,但无法获得特定元素。 有没有办法提取任何仅指示名称的元素?

谢谢!

如果您只想快速找到这两个值,您可以这样做:

        XNamespace ns = "http:XXXXXXXXXXXX.wsdl";
        var data = XML.Root.Elements("Body").Elements(ns + "login_newResponse").Elements(ns + "return")
            .Select(e => new { ConnectionId = (string)e.Element(ns + "_connectionid"), Return = (string)e.Element(ns + "return") })
            .FirstOrDefault();

您可能需要将 "http:XXXXXXXXXXXX.wsdl" 替换为 "real" 命名空间。