次の方法で共有


オブジェクト XElement と XDocument の有効なコンテンツ (LINQ to XML)

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

XElement コンストラクターの有効な型

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

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

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

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

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

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

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

XDocument コンストラクターの有効な型

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

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

XDocument コンストラクターの有効な型は、次のとおりです。

  • 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 ノードを新しいコンテンツに置き換えます。

関連項目