次の方法で共有


XmlDocument.InnerXml プロパティ

現在のノードの子を表すマークアップを取得または設定します。

Overrides Public Property InnerXml As String
[C#]
public override string InnerXml {get; set;}
[C++]
public: __property String* get_InnerXml();public: __property void set_InnerXml(String*);
[JScript]
public override function get InnerXml() : String;public override function set InnerXml(String);

プロパティ値

現在のノードの子のマークアップ。

例外

例外の種類 条件
XmlException このプロパティを設定したときに指定した XML は、整形式ではありません。

解説

このプロパティを設定すると、ノードの子を指定された文字列の解析済みの内容に置き換えます。解析は、現在の名前空間コンテキストで実行されます。

InnerXml は、冗長な名前空間宣言を削除します。この結果、カット アンド ペースト操作を何度も実行しても、冗長な名前空間宣言によってドキュメント サイズが増加することはありません。次の XSL ドキュメントを例に説明します。

<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="stock">
         ...
    </xsl:template>
   </xsl:stylesheet>

スタイルシート ノードの InnerXml プロパティは、次の文字列を返します。

<xsl:template match="stock" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     ...
   </xsl:template>

ノードの ID の保存に使用される、追加の xmlns:xsl 名前空間宣言に注意してください。この内部 XML 文字列を再挿入した場合は、元のドキュメントが返されます。つまり、親の xsl:stylesheet 要素に既に xmlns:xsl 名前空間宣言がある場合、 InnerXml は xmlns:xsl 名前空間宣言が冗長であると認識して、それを削除します。

既定の名前空間がないドキュメントから既定の名前空間があるドキュメントに InnerXml を移動した場合、動作は少し異なります。次の XML 文字列で説明します。

<test>
     <item>123</item>
   </test>

InnerXml は、名前空間宣言のない書式なし XML 文字列を返します。

<item>123</item>

その後、この文字列を既定の名前空間があるドキュメントに挿入した場合を次に示します。

<test2 xmlns="urn:1">
   </test>

InnerXml はコンテキスト内の文字列を解析し、新しいノードが urn:1 名前空間をピック アップします。結果は次のようになります。

<test2 xmlns="urn:1">
     <item>123</item>
   </test>

ここで InnerXml を要求すると、次の結果が返されます。

<item xmlns="urn:1">123</item>

挿入した項目が名前空間のないドキュメントに由来しているという事実をその挿入した項目に明示的に保存する場合は、xmlns= "" 宣言を手動で追加し、返される文字列を挿入する必要があります。

<item >123</item>

この最終的な結果を次に示します。

  1. 名前空間を使用しないドキュメント間での InnerXml のカット アンドペーストはクリーンで単純です。文字列に冗長な "xmlns" は作成されません。
  2. InnerXml は、複数の名前空間のあるドキュメント (つまり、XSL スタイルシート) 間でカット アンド ペーストすることもできます。
  3. xmlns:xsl 宣言は文字列に自動的に出現し、ノードの階層構造で見えなくなります。
  4. InnerXml を既定の名前空間のないドキュメントから既定の名前空間のあるドキュメントに移動している場合、新しいノードは新しい既定の名前空間をピック アップします。

InnerXml が現在ドキュメントに定義されていないエンティティ参照を含むテキストを使用して設定されている場合、結果のツリーには空の EntityReference ノードが含まれます。

このプロパティは、DOM (Document Object Model) に対する Microsoft 拡張機能です。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

参照

XmlDocument クラス | XmlDocument メンバ | System.Xml 名前空間