XElement オブジェクトと XDocument オブジェクトの有効なコンテンツ

ここでは、コンストラクターやメソッドに渡すことができる有効な引数について説明します。これらのコンストラクターやメソッドは、コンテンツを要素やドキュメントに追加するためのものです。

有効なコンテンツ

多くのクエリは、XElementIEnumerable<T> または XAttributeIEnumerable<T> に評価されます。 XElement オブジェクトまたは XAttribute オブジェクトのコレクションを XElement コンストラクターに渡すことができます。 したがって、XML ツリーの設定に使用するメソッドとコンストラクターに対して、クエリの結果をコンテンツとして渡すと便利です。

単純コンテンツを追加するときに、さまざまな型をこのメソッドに渡すことができます。 有効な型は、次のとおりです。

複合コンテンツを追加するときは、次のような型をこのメソッドに渡すことができます。

オブジェクトが IEnumerable<T> を実装している場合、オブジェクト内のコレクションが列挙され、コレクション内のすべての項目が追加されます。 コレクションに XNode オブジェクトまたは XAttribute オブジェクトが含まれている場合、コレクション内の各項目が個別に追加されます。 コレクションにテキスト (またはテキストに変換されるオブジェクト) が含まれている場合、コレクション内のテキストが連結され、1 つのテキスト ノードとして追加されます。

コンテンツが null の場合は、何も追加されません。 コレクションを渡すとき、コレクション内の項目は null にできます。 コレクション内の null 項目は、ツリーに影響を与えません。

追加する属性の名前は、そのコンテナー要素内で一意であることが必要です。

XNode オブジェクトや XAttribute オブジェクトを追加するとき、新しいコンテンツに親がない場合、単にオブジェクトが XML ツリーにアタッチされます。 新しいコンテンツに既に親があり、別の XML ツリーの一部となっている場合は、新しいコンテンツが複製され、新しく複製されたコンテンツが XML ツリーにアタッチされます。

ドキュメントの有効なコンテンツ

属性と単純コンテンツをドキュメントに追加することはできません。

XDocument の作成が必要となるシナリオは多くありません。 通常、その代わりに XElement ルート ノードを使用して XML ツリーを作成できます。 ドキュメントを作成する要件 (処理命令とコメントを最上位に作成する必要がある、ドキュメント型をサポートする必要がある、など) が特にない限り、XElement をルート ノードとして使用する方が便利です。

ドキュメントの有効なコンテンツは次のとおりです。

  • 0 個または 1 個の XDocumentType オブジェクト。 ドキュメントの型は、要素の前に置く必要があります。

  • 0 個または 1 個の要素。

  • 0 個以上のコメント。

  • 0 個以上の処理命令。

  • 空白のみを含む、0 個以上のテキスト ノード。

コンテンツの追加が可能なコンストラクターと関数

次のメソッドを使用すると、XElement または XDocument に子コンテンツを追加できます。

メソッド

説明

XElement

XElement を構築します。

XDocument

XDocument を構築します。

Add

XElement または XDocument の子コンテンツの末尾に追加します。

AddAfterSelf

XNode の後にコンテンツを追加します。

AddBeforeSelf

XNode の前にコンテンツを追加します。

AddFirst

XContainer の子コンテンツの冒頭にコンテンツを追加します。

ReplaceAll

XElement のすべてのコンテンツ (子ノードおよび属性) を置き換えます。

ReplaceAttributes

XElement の属性を置き換えます。

ReplaceNodes

子ノードを新しいコンテンツに置き換えます。

ReplaceWith

ノードを新しいコンテンツに置き換えます。

参照

概念

XML ツリーの作成