ASP.NET LINQ到XML如何到达一个节点/元素只是给出名称

本文关键字:元素 节点 一个 XML LINQ NET ASP | 更新日期: 2023-09-27 18:01:24

下面的代码,我想得到粗体元素:_connectionId和返回。

有两个返回标签,我需要得到"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字符串列表,但它是不可能得到一个特定的元素。是否有一种方法可以提取任何指示名称的元素?

谢谢!

ASP.NET LINQ到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"命名空间