Я не слишком часто использовал XML и мне нужна небольшая помощь.
Мое приложение .NET получает этот XML-ответ от общедоступного сервера проверки 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>
Я хочу извлечь из этого следующие значения:
- Uri as String
- отмечен как String
- Doctype as String
- CharSet as String
- Действительность как логическое значение
- ErrorList as System.Collections.Generic.List (Of W3CError)
- WarningList как System.Collections.Generic.List (Of W3CError)
Этот тип W3CError является небольшим классом, который я создал со следующими свойствами:
- Строка как целое число
- Col как целое число
- Сообщение в виде строки
- MessageId as String
- Объяснение в виде строки
- Источник в виде строки
Вот что я зашел так далеко. Но это не работает ...
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...
Как я могу исправить сломанный код выше? Или: я не в порядке с этим? Какой способ лучше?