Поделиться через


Как обработать ошибки синтаксического анализа

В этом разделе показано, как обнаружить код 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.

См. также

Основные понятия

Синтаксический анализ XML