XPathDocument および XmlDocument を使用した XML データの読み取り

System.Xml.XPath 名前空間で XML ドキュメントを読み取る方法は 2 つあります。 1 つは読み取り専用の XPathDocument クラスを使用して XML ドキュメントを読み取る方法で、もう 1 つは、XmlDocument 名前空間で編集可能な System.Xml クラスを使用して XML ドキュメントを読み取る方法です。

XPathDocument クラスを使用した XML ドキュメントの読み取り

XPathDocument クラスは、XPath データ モデルによる XML ドキュメントの高速、読み取り専用のメモリ内表現を提供します。 XPathDocument クラスのインスタンスは、その 6 つのコンストラクターの 1 つを使用して作成されます。 これらのコンストラクターでは、StreamTextReader、または XmlReader オブジェクトを使用して XML ドキュメントを読み取ることも、XML ファイルへの string パスを使用して XML ドキュメントを読み取ることもできます。

以下は、XPathDocument クラスの string コンストラクターを使用して XML ドキュメントを読み取る例です。

Dim document As XPathDocument = New XPathDocument("books.xml")  
XPathDocument document = new XPathDocument("books.xml");  

XmlDocument クラスを使用した XML ドキュメントの読み取り

XmlDocument クラスは、W3C ドキュメント オブジェクト モデル (DOM) の DOM Level 1 Core および DOM Level 2 Core を実装する XML ドキュメントの編集可能なメモリ内表現です。 XmlDocument クラスのインスタンスは、その 3 つのコンストラクターの 1 つを使用して作成されます。 XmlDocument クラス コンストラクターをパラメーターなしで呼び出すことによって、新しい空の XmlDocument オブジェクトを作成できます。 コンストラクターの呼び出し後、Load メソッドを使用するか、XML ファイルへの XmlDocument パスを使用して、StreamTextReader、または XmlReader オブジェクトから新しい string オブジェクトに XML データを読み込みます。

以下は、パラメーターなしの XmlDocument クラス コンストラクターと Load メソッドを使用して XML ドキュメントを読み込む例です。

Dim document As XmlDocument = New XmlDocument()  
document.Load("books.xml")  
XmlDocument document = new XmlDocument();  
document.Load("books.xml");  

XML ドキュメントのエンコーディングの判定

前に示されているように、XmlReader オブジェクトを使用して XML ドキュメントを読み取り、XPathDocument および XmlDocument オブジェクトを作成できます。 ただし、XmlReader オブジェクトは、エンコードされていないデータを読み取り、その結果、エンコード情報を提供しない場合があります。

XmlTextReader クラスは、XmlReader クラスを継承し、その Encoding プロパティを使用してエンコード情報を提供します。また、このクラスは、XPathDocument オブジェクトまたは XmlDocument オブジェクトの作成に使用できます。

XmlTextReader クラスよって提供されるエンコード情報に関する詳細については、Encoding クラスのリファレンス ドキュメントの「XmlTextReader」プロパティを参照してください。

XPathNavigator オブジェクトの作成

XPathDocument または XmlDocument オブジェクトのどちらからに XML ドキュメントを読み込んだ後、XPathNavigator オブジェクト作成して、基になる XML データを選択、評価、移動、および (一部の状況で) 編集できます。

XPathDocument クラスに加えて、XmlDocument および XmlNode クラスは両方とも、IXPathNavigable 名前空間の System.Xml.XPath インターフェイスを実装しています。 結果として、3 つのクラスはすべて CreateNavigator オブジェクトを返す XPathNavigator メソッドを提供します。

XPathNavigator クラスによる XML ドキュメントの編集

XML データの選択、評価、および移動に加えて、XPathNavigator クラスは、作成元のオブジェクトに基づき、一部の状況で XML ドキュメントの編集に使用できます。

XPathDocument クラスは読み取り専用ですが、XmlDocument クラスは編集可能です。その結果、XPathNavigator オブジェクトから作成された XPathDocument オブジェクトは XML ドキュメントの編集に使用できませんが、XmlDocument オブジェクトから作成された場合は編集に使用できます。 XPathDocument クラスは XML ドキュメントの読み取りだけに使用する必要があります。 XML ドキュメントを編集する必要がある場合、またはイベント処理など XmlDocument クラスによって提供される追加の機能が必要な場合は、XmlDocument クラスを使用する必要があります。

CanEdit クラスの XPathNavigator プロパテイは、XPathNavigator オブジェクトが XML データを編集できるかどうかを指定します。

各クラスの CanEdit プロパティ値についての説明を次に示します。

IXPathNavigable 実装 CanEdit
XPathDocument false
XmlDocument true

関連項目