次の方法で共有


方法 : 解析エラーをキャッチする

このトピックでは、形式が正しくないか無効な XML を検出する方法について説明します。

LINQ to XML は、XmlReader を使用して実装されます。 形式が正しくない XML や無効な XML が LINQ to XML に渡されると、基になる XmlReader クラスから例外がスローされます。 XML を解析するさまざまなメソッド (XElement.Parse など) はこの例外をキャッチしません。この例外は、アプリケーションでキャッチできます。

XML リテラルを使用する場合は、解析エラーを検出できないことに注意してください。 Visual Basic コンパイラは、形式が正しくないか無効な XML をキャッチします。

使用例

次のコードでは、無効な 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.ParseXDocument.ParseXElement.Load、および XDocument.Load メソッドによってスローされる例外の詳細については、XmlReader のドキュメントを参照してください。

参照

概念

XML の解析