J'ai des documents XML (qui décrit une interface de service wsdl):Linq 2 xml: Comment récupérer les noms des méthodes web à partir d'un document wsdl?
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://tempuri.org/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
<s:element name="GetDummyType">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="param1" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetDummyTypeResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetDummyTypeResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="SimplestWebService">
<s:complexType />
</s:element>
<s:element name="SimplestWebServiceResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="SimplestWebServiceResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="SignInComp">
<s:complexType />
</s:element>
<s:element name="SignInCompResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="SignInCompResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
...
Deux opérations que je dois effectuer sur le XML ci-dessus:
- récupérer tous les noms d'éléments (GetDumm yType, SimplestWebService, etc.) Ce sont les noms des méthodes (ils ne se terminent pas par "Réponse").
- récupérer par son nom de params d'une méthode (param1 pour GetDummyType etc.)
J'ai réussi jusqu'à présent que pour analyser ce document comme XmlDocument:
XmlDocument doc = new XmlDocument();
doc.LoadXml(result.ToString());
(je sais que ce n'est pas beaucoup)
Je ne peux pas comprendre comment ce XML est mappé à quelque chose que vous pouvez utiliser linq sur ..
Comment faites-vous cela?
Merci.
Juste Pour votre information: Minor glitch (retourné quelques noms de méthodes non pertinents) que j'ai résolu par: var methodsNamesElements = elements.Where (x => x.Descendants(). Count()! = 0); et se disperse sur methodsNamesElements au lieu d'éléments. Mais à part ça - fonctionne comme un charme! Merci beaucoup. –