Ich habe XML nicht zu viel verwendet und brauche ein wenig Hilfe.Wie extrahiere ich Daten aus einer XML-Datei mit Visual Basic?
Meine .NET-Anwendung wird diese XML-Antwort von der öffentlichen Validierungsserver des 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>
ich daraus folgende Werte extrahieren möchten:
- Uri als String
- Checkedby als Zeichenfolge
- Doctype als Zeichenfolge
- CharSet als Zeichenfolge
- Gültigkeit als Boolean
- Errorlist als System.Collections.Generic.List (Of W3CError)
- WARNING als System.Collections.Generic.List (Of W3CError)
Diese Art W3CError ist ein kleines Klasse habe ich mit den folgenden Eigenschaften:
- Linie als Integer
- Col als Integer
- Nachricht als String
- Meldungs als String
- Erklärung als String
- Quelle als String
Hier ist, was ich habe, so weit gehen. Aber dies nicht funktioniert, ...
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...
Wie kann ich den gebrochenen Code oben beheben? Oder: Bin ich damit weit weg? Was ist ein besserer Weg?
haben Sie eine WSDL zur Verfügung? VS sollte in der Lage sein, Klassen für Datentypen zu generieren, die vom Webdienst automatisch für Sie bereitgestellt werden, sodass Sie die SOAP-Ausgabe nicht manuell analysieren müssen. – Marek