XElement オブジェクトと XDocument オブジェクトの有効なコンテンツ (LINQ to XML)
この記事では、コンストラクターに渡すことができる有効な引数と、要素やドキュメントにコンテンツを追加するために使用するメソッドについて説明します。
XElement コンストラクターの有効な型
クエリは、多くの場合、XAttributeの XElement または IEnumerable<T> の IEnumerable<T> に評価されます。 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