XML ドキュメントのノード、コンテンツ、値の変更Modifying Nodes, Content, and Values in an XML Document

ドキュメントのノードおよびコンテンツを変更するには、さまざまな方法があります。There are many ways you can modify the nodes and content in a document. 次の操作を行うことができます。You can:

  • Value プロパティを使用してノードの値を変更する。Change the value of nodes using the Value property.

  • ノードを新しいノードに置き換えることにより、ノード セット全体を変更します。Modify an entire set of nodes by replacing the nodes with new nodes. これは InnerXml プロパティを使用して実行できます。This is done using the InnerXml property.

  • RemoveChild メソッドを使用して既存のノードを新しいノードに置き換える。Replace existing nodes with new nodes using the RemoveChild method.

  • XmlCharacterDataAppendData、または InsertData メソッドを使用して ReplaceData クラスから継承した追加の文字をノードに追加する。Add additional characters to nodes that inherit from the XmlCharacterData class using the AppendData, InsertData, or ReplaceData methods.

  • DeleteData から継承したノード型に対し、XmlCharacterData メソッドを使用することにより、文字範囲を削除してコンテンツを変更する。Modify the content by removing a range of characters using the DeleteData method on node types that inherit from XmlCharacterData.

ノードの値を簡単に変更するには、node.Value = "new value"; を使用します。A simple technique for changing the value of a node is to use node.Value = "new value";. この 1 行のコードを実行できるノード型と、そのノード型で変更されるデータを次の表に示します。The following table lists the node types that this single line of code works on and exactly what data for that node type is changed.

ノード型Node type 変更されるデータData changed
属性Attribute 属性の値。The value of the attribute.
CDATASectionCDATASection CDATASection のコンテンツ。The content of the CDATASection.
コメントComment コメントの内容。The content of the comment.
ProcessingInstructionProcessingInstruction ターゲットを除くコンテンツ。The content, excluding the target.
テキストText テキストのコンテンツ。The content of the text.
XmlDeclarationXmlDeclaration <?xml?> のマークアップを除く、宣言のコンテンツ。The content of the declaration, excluding the <?xml and ?> markup.
WhitespaceWhitespace 空白の値。The value of the white space. この値は、スペース、タブ、CR、LF という 4 つの認識可能 XML 空白文字のいずれかに設定できます。You can set the value to be one of the four recognized XML white space characters: space, tab, CR, or LF.
SignificantWhitespaceSignificantWhitespace 有意の空白の値。The value of the significant white space. この値は、スペース、タブ、CR、LF という 4 つの認識可能 XML 空白文字のいずれかに設定できます。You can set the value to be one of the four recognized XML white space characters: space, tab, CR, or LF.

この表に記載されていないノード型は、値を設定できるノード型ではありません。Any node type not listed in the table is not a valid node type to set a value on. これら以外のノード型に値を設定すると、InvalidOperationException がスローされます。Setting a value on any other node type throws an InvalidOperationException.

InnerXml プロパティによって、現在のノードの子ノードのマークアップを変更できます。The InnerXml property changes the markup of the child nodes for the current node. このプロパティを設定すると、指定した文字列から解析されたコンテンツで子ノードが置き換えられます。Setting this property replaces the child nodes with the parsed contents of the given string. 文字列の解析は、現在の名前空間コンテキストで実行されます。The parsing is done in the current namespace context. さらに、InnerXml は冗長な名前空間宣言を削除します。In addition, InnerXml removes redundant namespace declarations. この結果、カット アンド ペースト操作を何度も実行しても、冗長な名前空間宣言によってドキュメント サイズが増加することはありません。As a result, numerous cut and paste operations do not increase the size of your document with redundant namespace declarations. InnerXmlの操作における名前空間の影響を示すコード サンプルについては、「InnerXml」を参照してください。For a code example showing the effect of namespaces on the InnerXml operation, see the InnerXml property.

ReplaceData メソッドと RemoveChild メソッドを使用すると、これらのメソッドによって置換または削除されたノードが返されます。When using the ReplaceData and RemoveChild methods, the methods return the replaced or removed node. このノードは XML ドキュメント オブジェクト モデル (DOM) のどこかに再度挿入することができます。This node can then be reinserted somewhere else in the XML Document Object Model (DOM). ReplaceData メソッドは、ドキュメントに挿入されるノードに対し、2 種類の検証チェックを実行します。The ReplaceData method does two validation checks on the node being inserted into the document. 最初のチェックでは、そのノードの親となるノードが、挿入されるノード型の子ノードを持つことができるかどうかを確認します。The first check ensures that the node is becoming a child of a node that can have child nodes of its type. 2 番目のチェックでは、挿入されるノードが、その親となるノードの祖先でないことを確認します。The second check ensures that the node being inserted is not an ancestor of the node it is becoming a child of. これらの条件のいずれかに違反すると、InvalidOperationException がスローされます。Violating either of these conditions throws an InvalidOperationException.

編集可能なノードに読み取り専用の子を追加したり、削除したりするのは有効な操作です。It is valid to add or remove a read-only child from a node that can be edited. しかし、読み取り専用のノードそのものを変更しようとすると、InvalidOperationException がスローされます。However, attempts to modify the read-only node itself throws an InvalidOperationException. この一例として、XmlEntityReference ノードの子を変更しようとした場合が当てはまります。An example of this is modifying the children of an XmlEntityReference node. このノードの子は読み取り専用であり、変更できません。The children are read-only and cannot be modified. それらを変更しようとすると、InvalidOperationException がスローされます。Any attempt to modify them throws an InvalidOperationException.

関連項目See also