XmlDocument.InnerXml Vlastnost

Definice

Získá nebo nastaví kód představující podřízené položky aktuálního uzlu.

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

Hodnota vlastnosti

Kód podřízených položek aktuálního uzlu.

Výjimky

Xml zadaný při nastavení této vlastnosti není správně formátován.

Poznámky

Nastavení této vlastnosti nahradí podřízené položky uzlu parsovaným obsahem daného řetězce. Analýza se provádí v aktuálním kontextu jmenného prostoru.

InnerXml odebere redundantní deklarace oboru názvů. V důsledku toho četné operace vyjmutí a vložení nezvětší velikost dokumentu kvůli redundantním deklaracím oboru názvů. Zvažte následující dokument XSL:

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

Vlastnost InnerXml uzlu šablony stylů vrátí následující řetězec:

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

Všimněte si další deklarace oboru názvů xmlns:xsl, která se používá k zachování identity uzlu. Pokud tento vnitřní řetězec XML znovu vložíte, vrátíte původní dokument. Jinými slovy, rozpozná, InnerXml že deklarace oboru názvů xmlns:xsl je redundantní vzhledem k tomu, že nadřazený element xsl:stylesheet již má deklaraci oboru názvů xmlns:xsl, a proto ji odebere.

Pokud přejdete InnerXml z dokumentu bez výchozího oboru názvů na dokument s výchozím oborem názvů, chování se trochu liší. Představte si následující řetězec XML:

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

InnerXml vrátí prostý řetězec XML bez deklarací oboru názvů:

<item>123</item>

Pokud tento řetězec vložíte do dokumentu, který má výchozí obor názvů, například následující:

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

InnerXml analyzuje řetězec v kontextu a nové uzly vyberou obor názvů urn:1. Výsledek vypadá takto:

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

Když teď požádáte o InnerXml vrácení následujících položek:

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

Pokud chcete, aby vložená položka zachovala skutečnost, že pochází z dokumentu, který nemá žádný obor názvů, musíte ručně přidat deklaraci xmlns= "" a vložit výsledný řetězec:

<item xmlns="">123</item>

Čistý účinek všech těchto možností je následující:

  1. Vyjmutí InnerXml a vkládání mezi dokumenty, které nepoužívají obory názvů, je čisté a jednoduché a nevytváří redundanci xmlns ve vašich řetězcích.

  2. InnerXml lze také použít k vyjmutí a vložení mezi dokumenty, které mají více než jeden obor názvů (to jsou šablony stylů XSL).

  3. Deklarace xmlns:xsl se automaticky zobrazí v řetězcích a zmizí v hierarchiích uzlů.

  4. V případě, že přecházíte InnerXml z dokumentu, který nemá výchozí obor názvů, do dokumentu, který má výchozí obor názvů, nové uzly převezmou nový výchozí obor názvů.

Pokud InnerXml je nastaven text obsahující odkazy na entity, které nejsou aktuálně definovány v dokumentu, výsledný strom bude obsahovat prázdné uzly EntityReference.

Tato vlastnost je rozšířením Microsoftu pro model DOM (Document Object Model).

Platí pro