次の方法で共有


XmlDocument.InnerXml プロパティ

定義

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

public:
 virtual property System::String ^ InnerXml { System::String ^ get(); void set(System::String ^ value); };
public override string InnerXml { get; set; }
member this.InnerXml : string with get, set
Public Overrides Property InnerXml As String

プロパティ値

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

例外

このプロパティの設定時に指定される 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 文字列を再挿入すると、元のドキュメントが返されます。 つまり、 は、 InnerXml 親 xsl:stylesheet 要素に既に xmlns:xsl 名前空間宣言があるため、xmlns:xsl 名前空間宣言が削除されていることを考えると、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 xmlns="">123</item>

このすべてによる正味の効果は次のとおりです。

  1. 名前空間を使用しないドキュメント間での InnerXml 切り取りと貼り付けはクリーンでシンプルであり、文字列に "xmlns" 冗長性は作成されません。

  2. InnerXml また、複数の名前空間 (XSL スタイルシート) を持つドキュメント間で切り取りと貼り付けを行うためにも使用できます。

  3. xmlns:xsl 宣言は文字列に自動的に表示され、ノード階層に表示されなくなります。

  4. 既定の名前空間を持たないドキュメントから既定の名前空間を持つドキュメントに移行 InnerXml する場合、新しいノードは新しい既定の名前空間を取得します。

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

このプロパティは、ドキュメント オブジェクト モデル (DOM) の Microsoft 拡張機能です。

適用対象