XmlDocument.InnerXml Eigenschap

Definitie

Hiermee worden de markeringen opgehaald of ingesteld die de onderliggende elementen van het huidige knooppunt vertegenwoordigen.

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

Waarde van eigenschap

De markering van de onderliggende items van het huidige knooppunt.

Uitzonderingen

De XML die is opgegeven bij het instellen van deze eigenschap, is niet goed opgemaakt.

Opmerkingen

Als u deze eigenschap instelt, worden de onderliggende elementen van het knooppunt vervangen door de geparseerde inhoud van de opgegeven tekenreeks. De parsering wordt uitgevoerd in de huidige naamruimtecontext.

InnerXml verwijdert redundante naamruimtedeclaraties. Als gevolg hiervan vergroten talloze knip- en plakbewerkingen de grootte van uw document niet met redundante naamruimtedeclaraties. Overweeg het volgende XSL-document:

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

De InnerXml eigenschap op het opmaakmodelknooppunt retourneert de volgende tekenreeks:

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

Let op de aanvullende xmlns:xsl-naamruimtedeclaratie die wordt gebruikt om de knooppuntidentiteit te behouden. Als u deze interne XML-tekenreeks opnieuw invoegt, krijgt u het oorspronkelijke document terug. Met andere woorden, InnerXml herkent dat de declaratie xmlns:xsl-naamruimte overbodig is, omdat het bovenliggende element xsl:stylesheet al de declaratie xmlns:xsl-naamruimte heeft en daarom verwijdert.

Als u van een document zonder standaardnaamruimte naar een document met een standaardnaamruimte gaat InnerXml , is het gedrag iets anders. Houd rekening met de volgende XML-tekenreeks:

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

InnerXml retourneert een gewone XML-tekenreeks zonder naamruimtedeclaraties:

<item>123</item>

Als u deze tekenreeks vervolgens invoegt in een document met een standaardnaamruimte, zoals de volgende:

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

InnerXml parseert de tekenreeks in context en de nieuwe knooppunten halen de urn:1-naamruimte op. Het resultaat ziet er als volgt uit:

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

Wanneer u nu om het InnerXml volgende vraagt, krijgt u het volgende terug:

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

Als u het ingevoegde item expliciet wilt behouden dat het afkomstig is van een document zonder naamruimte, moet u handmatig een xmlns= ""-declaratie toevoegen en de resulterende tekenreeks invoegen:

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

Het netto-effect hiervan is als volgt:

  1. Knippen en plakken InnerXml tussen documenten die geen naamruimten gebruiken, is schoon en eenvoudig en maakt geen xmlns-redundantie in uw tekenreeksen.

  2. InnerXml kan ook worden gebruikt om te knippen en plakken tussen documenten met meer dan één naamruimte (dat is XSL-opmaakmodellen).

  3. xmlns:xsl-declaraties worden automatisch weergegeven in uw tekenreeksen en verdwijnen in uw knooppunthiërarchieën.

  4. In het geval dat u overstapt InnerXml van een document met geen standaardnaamruimte naar een document met een standaardnaamruimte, worden de nieuwe standaardnaamruimte door de nieuwe knooppunten opgehaald.

Als InnerXml deze is ingesteld met tekst die entiteitsverwijzingen bevat die momenteel niet in het document zijn gedefinieerd, bevat de resulterende structuur lege EntityReference-knooppunten.

Deze eigenschap is een Microsoft extensie voor het Document Object Model (DOM).

Van toepassing op