次の方法で共有


XML ドキュメント内のノード、コンテンツ、および値の変更

ドキュメント内のノードとコンテンツを変更する方法は多数あります。 次のようにすることができます。

  • Value プロパティを使用してノードの値を変更します。

  • ノードを新しいノードに置き換えて、ノードのセット全体を変更します。 これは、 InnerXml プロパティを使用して行われます。

  • RemoveChild メソッドを使用して、既存のノードを新しいノードに置き換えます。

  • AppendDataInsertData、またはReplaceDataメソッドを使用して、XmlCharacterData クラスから継承するノードに文字を追加します。

  • XmlCharacterDataから継承するノード型のDeleteData メソッドを使用して、文字の範囲を削除して、コンテンツを変更します。

ノードの値を変更する簡単な手法は、 node.Value = "new value";を使用することです。 次の表に、この 1 行のコードで動作するノードの種類と、そのノード の種類に対して変更されるデータを正確に示します。

ノード タイプ 変更されたデータ
特性 属性の値。
CDATASection CDATASection の内容。
コメント コメントの内容。
処理命令 ターゲットを除くコンテンツ。
テキスト テキストの内容。
XmlDeclaration <?xmlおよび?>マークアップを除く宣言の内容。
空白 空白の値。 この値は、認識される 4 つの XML 空白文字 (スペース、タブ、CR、または LF) のいずれかに設定できます。
SignificantWhitespace 重要な空白の値。 この値は、認識される 4 つの XML 空白文字 (スペース、タブ、CR、または LF) のいずれかに設定できます。

表にリストされていないノード・タイプは、値を設定する有効なノード・タイプではありません。 他のノード タイプに値を設定すると、 InvalidOperationExceptionがスローされます。

InnerXml プロパティは、現在のノードの子ノードのマークアップを変更します。 このプロパティを設定すると、子ノードは、指定された文字列の解析された内容に置き換えられます。 解析は、現在の名前空間コンテキストで行われます。 さらに、 InnerXml は冗長な名前空間宣言を削除します。 そのため、多数の切り取りと貼り付けの操作では、冗長な名前空間宣言を使用してドキュメントのサイズが大きくなるわけではありません。 InnerXml操作に対する名前空間の影響を示すコード例については、InnerXml プロパティを参照してください。

ReplaceDataメソッドとRemoveChild メソッドを使用すると、置換または削除されたノードが返されます。 このノードは、XML ドキュメント オブジェクト モデル (DOM) 内の別の場所に再挿入できます。 ReplaceData メソッドは、ドキュメントに挿入されるノードに対して 2 つの検証チェックを行います。 最初のチェックでは、ノードが、その種類の子ノードを持つノードの子になっていることを確認します。 2 番目のチェックでは、挿入されるノードが、そのノードが子になるノードの先祖ではないことが確認されます。 これらのいずれかの条件に違反すると、 InvalidOperationExceptionがスローされます。

編集できるノードに対して読み取り専用の子を追加または削除することは有効です。 ただし、読み取り専用ノード自体を変更しようとすると、 InvalidOperationExceptionがスローされます。 たとえば、 XmlEntityReference ノードの子を変更します。 子は読み取り専用であり、変更できません。 変更しようとすると、 InvalidOperationExceptionがスローされます。

こちらも参照ください