XmlDocument.InnerXml Vlastnost

Definice

Získá nebo nastaví značky 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

Značky podřízených položek aktuálního uzlu

Výjimky

Kód XML zadaný při nastavení této vlastnosti není správně vytvořen.

Poznámky

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

InnerXml odebere redundantní deklarace oboru názvů. V důsledku toho řada operací vyjmutí a vložení nezvětší velikost dokumentu s redundantními deklaracemi oboru názvů. Podívejte se na 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 na 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, získáte zpět původní dokument. Jinými slovy rozpozná, InnerXml že deklarace oboru názvů xmlns:xsl je redundantní vzhledem k tomu, že nadřazený prvek xsl:stylesheet již obsahuje 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ší. Zvažte 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 pak 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 parsuje řetězec v kontextu a nové uzly přebírají obor názvů urn:1. Výsledek vypadá takto:

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

Teď, když o to InnerXml požádáte, dostanete zpět následující:

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

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

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

Čistý efekt toho všeho je následující:

  1. Vyjmutí a vkládání InnerXml 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í ve vašich řetězcích a zmizí ve vašich hierarchiích uzlů.

  4. V případě, že přecházíte InnerXml z dokumentu, který nemá výchozí obor názvů, na dokument, 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 Microsoft rozšíření modelu DOM (Document Object Model).

Platí pro