Je n'ai pas trop utilisé XML et j'ai besoin d'un peu d'aide.Comment puis-je extraire des données d'un fichier XML avec Visual Basic?
Mon application .NET obtient cette réponse XML du serveur de validation publique du W3C:
<?xml version="1.0" encoding="UTF-8" ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Body>
<m:markupvalidationresponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding" xmlns:m="http://www.w3.org/2005/10/markup-validator">
<m:uri>upload://Form Submission</m:uri>
<m:checkedby>http://validator.w3.org/</m:checkedby>
<m:doctype>-//W3C//DTD XHTML 1.1//EN</m:doctype>
<m:charset>utf-8</m:charset>
<m:validity>true</m:validity>
<m:errors>
<m:errorcount>0</m:errorcount>
<m:errorlist />
</m:errors>
<m:warnings>
<m:warningcount>0</m:warningcount>
<m:warninglist />
</m:warnings>
</m:markupvalidationresponse>
</env:Body>
</env:Envelope>
Je veux extraire de cela les valeurs suivantes:
- Uri comme chaîne
- Checkedby comme Chaîne
- Doctype as String
- CharSet as String
- Validité comme Boolean
- ErrorList comme System.Collections.Generic.List (de W3CError)
- WARNINGLIST comme System.Collections.Generic.List (de W3CError)
Ce genre W3CError est un petit classe I créé avec les propriétés suivantes:
- ligne Integer
- Col en entier
- message as String
- MessageId as String
- Explication as String
- Source as String
Voici ce que je vais jusqu'à présent. Mais, cela ne fonctionne pas ...
Dim ResponseReader As Xml.XmlTextReader = New Xml.XmlTextReader(ResponseStream) Dim ResponseDocument As New Xml.XPath.XPathDocument(ResponseReader) Dim ResponseNavigator As Xml.XPath.XPathNavigator = ResponseDocument.CreateNavigator() Dim ResponseIterator As Xml.XPath.XPathNodeIterator 'uri ResponseIterator = ResponseNavigator.Select("uri") ResponseIterator.MoveNext() _Uri = ResponseIterator.Current.Value 'checked by ResponseIterator = ResponseNavigator.Select("checkedby") ResponseIterator.MoveNext() _Checkedby = ResponseIterator.Current.Value ...etc...
Comment puis-je corriger le code cassé au-dessus? Ou: Suis-je loin de cela? Quoi de mieux?
avez-vous un WSDL disponible? VS devrait être capable de générer automatiquement des classes pour les types de données exposés par le service Web, de sorte que vous n'avez pas besoin d'analyser manuellement la sortie SOAP. – Marek