2009-10-27 29 views
2

如何使用LINQ to XML從此xml中提取方法名稱和命名空間?如何使用LINQ在soap請求中獲取方法名稱和命名空間?

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" 
    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
    <soap:Header> 
    <wsa:Action>http://www.webserviceX.NET/GetISOCountryCodeByCountyName</wsa:Action> 
    <wsa:MessageID>urn:uuid:047f0012-b7d2-408d-bdd7-aa556edf70e8</wsa:MessageID> 
    <wsa:ReplyTo> 
     <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address> 
    </wsa:ReplyTo> 
    <wsa:To> </wsa:To> 
    <wsse:Security> 
     <wsu:Timestamp wsu:Id="Timestamp-2a4072a3-338c-434a-90ff-5f7d0aa6acbc"> 
     <wsu:Created>2009-10-22T19:20:22Z</wsu:Created> 
     <wsu:Expires>2009-10-22T19:25:22Z</wsu:Expires> 
     </wsu:Timestamp> 
    </wsse:Security> 
    </soap:Header> 
    <soap:Body> 
    <GetISOCountryCodeByCountyName xmlns="http://www.webserviceX.NET"> 
     <CountryName>India</CountryName> 
    </GetISOCountryCodeByCountyName> 
    </soap:Body> 
</soap:Envelope> 

我需要得到的價值GetISOCountryCodeByCountyName和http://www.webserviceX.NET

回答

2
public static void ReadXmlUsingLinq() 
{ 
      XmlDocument xdoc = new XmlDocument(); 
      xdoc.LoadXml("<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\" xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\" xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\"><soap:Header><wsa:Action>http://www.webserviceX.NET/GetISOCountryCodeByCountyName</wsa:Action><wsa:MessageID>urn:uuid:047f0012-b7d2-408d-bdd7-aa556edf70e8</wsa:MessageID><wsa:ReplyTo><wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address></wsa:ReplyTo><wsa:To> </wsa:To><wsse:Security><wsu:Timestamp wsu:Id=\"Timestamp-2a4072a3-338c-434a-90ff-5f7d0aa6acbc\"><wsu:Created>2009-10-22T19:20:22Z</wsu:Created><wsu:Expires>2009-10-22T19:25:22Z</wsu:Expires></wsu:Timestamp></wsse:Security></soap:Header><soap:Body><GetISOCountryCodeByCountyName xmlns=\"http://www.webserviceX.NET\"><CountryName>India</CountryName></GetISOCountryCodeByCountyName></soap:Body></soap:Envelope>"); 

      var query = from XmlNode a in xdoc.DocumentElement where a.Name == "soap:Body" select a.FirstChild; 
      foreach (XmlNode node in query) 
      { 
       Console.WriteLine(node.Name); 
       Console.WriteLine(node.Attributes["xmlns"].Value); 
      } 
      Console.ReadLine(); 
} 
相關問題