XmlDocument.InnerXml Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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í:
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.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).Deklarace xmlns:xsl se automaticky zobrazí ve vašich řetězcích a zmizí ve vašich hierarchiích uzlů.
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).