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>

請注意用來保留節點識別的其他 xmlns:xsl 命名空間宣告。 如果您重新插入此內部 XML 字串,將會傳回原始檔案。 換句話說, InnerXml 會辨識 xmlns:xsl 命名空間宣告是多餘的,因為父 xsl:stylesheet 元素已經有 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 節點。

這個屬性是文件物件模型的 Microsoft 擴充功能。

適用於