オブジェクト XElement と XDocument の有効なコンテンツ (LINQ to XML)
この記事では、コンストラクターに渡すことができる有効な引数と、コンテンツを要素やドキュメントに追加するために使用するメソッドについて説明します。
XElement コンストラクターの有効な型
多くのクエリは、IEnumerable<T> の XElement または IEnumerable<T> の XAttribute に評価されます。 XElement オブジェクトまたは XAttribute オブジェクトのコレクションを XElement コンストラクターに渡すことができます。 そのため、XML ツリーの設定に使用するメソッドとコンストラクターに対して、クエリの結果をコンテンツとして渡すと便利です。
単純コンテンツを追加するときに、次のようなさまざまな型をこのメソッドに渡すことができます。
- String
- Double
- Single
- Decimal
- Boolean
- DateTime
- TimeSpan
- DateTimeOffset
Object.ToString
を実装する任意の型- IEnumerable<T> を実装する任意の型
複合コンテンツを追加するときに、次のようなさまざまな型をこのメソッドに渡すことができます。
- XObject
- XNode
- XAttribute
- IEnumerable<T> を実装する任意の型
オブジェクトが 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 | ノードを新しいコンテンツに置き換えます。 |
関連項目
.NET