Как обработать ошибки синтаксического анализа
В этом разделе показано, как обнаружить код XML, имеющий неправильный формат или не прошедший проверку правильности.
Технология LINQ to XML реализуется с помощью объекта XmlReader. Если средствам LINQ to XML передается код XML, имеющий неправильный формат или не прошедший проверку правильности, то в базовом классе XmlReader активизируется исключение. Различные методы, выполняющие синтаксический анализ XML, например XElement.Parse, не перехватывают это исключение; его можно перехватить позднее в приложении.
Обратите внимание, что при использовании XML-литералов невозможно обнаружить ошибки синтаксического анализа. Ошибки, активизируемые при обнаружении имеющего неправильный формат или не прошедшего проверку правильности кода XML, перехватывает компилятор Visual Basic.
Пример
В следующем коде предпринимается попытка выполнить синтаксический анализ кода XML, не прошедшего проверку правильности.
try {
XElement contacts = XElement.Parse(
@"<Contacts>
<Contact>
<Name>Jim Wilson</Name>
</Contact>
</Contcts>");
Console.WriteLine(contacts);
}
catch (System.Xml.XmlException e)
{
Console.WriteLine(e.Message);
}
Try
Dim contacts As XElement = XElement.Parse("<Contacts>" & vbCrLf & _
" <Contact>" & vbCrLf & _
" <Name>Jim Wilson</Name>" & vbCrLf & _
" </Contact>" & vbCrLf & _
"</Contcts>")
Console.WriteLine(contacts)
Catch e As System.Xml.XmlException
Console.WriteLine(e.Message)
End Try
При выполнении этого кода активизируется следующее исключение.
The 'Contacts' start tag on line 1 does not match the end tag of 'Contcts'. Line 5, position 13.
Сведения об исключениях, которые могут возникать при использовании методов XElement.Parse, XDocument.Parse, XElement.Load и XDocument.Load см. в документации XmlReader.