XmlDocument.InnerXml Tulajdonság

Definíció

Lekéri vagy beállítja az aktuális csomópont gyermekeit ábrázoló korrektúrát.

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

Tulajdonság értéke

Az aktuális csomópont gyermekeinek jelölése.

Kivételek

A tulajdonság beállításakor megadott XML nem megfelelő.

Megjegyzések

A tulajdonság beállítása a csomópont gyermekeit az adott sztring elemezett tartalmára cseréli. Az elemzés az aktuális névtérkörnyezetben történik.

InnerXml eltávolítja a redundáns névtér-deklarációkat. Ennek eredményeképpen számos kivágási és beillesztési művelet nem növeli a dokumentum méretét redundáns névtérdeklarációkkal. Vegye figyelembe a következő XSL-dokumentumot:

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

A InnerXml stíluslap csomópontjának tulajdonsága a következő sztringet adja vissza:

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

Figyelje meg a csomóponti identitás megőrzéséhez használt további xmlns:xsl névtérdeklarációt. Ha újra beszúrja ezt a belső XML-sztringet, visszakapja az eredeti dokumentumot. Más szóval, felismeri, InnerXml hogy az xmlns:xsl névtér deklaráció redundáns, mivel a szülő xsl:stylesheet elem már rendelkezik az xmlns:xsl névtér deklarációval, ezért eltávolítja azt.

Ha egy alapértelmezett névtér nélküli dokumentumról egy alapértelmezett névtérrel rendelkező dokumentumra vált InnerXml , a viselkedés kissé eltérő. Vegye figyelembe a következő XML-sztringet:

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

InnerXml egyszerű XML-sztringet ad vissza névtérdeklarációk nélkül:

<item>123</item>

Ha ezt a sztringet beszúrja egy olyan dokumentumba, amely rendelkezik alapértelmezett névtérrel, például a következővel:

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

InnerXml elemzi a sztringet a kontextusban, és az új csomópontok felveszik az urn:1 névteret. Az eredmény így néz ki:

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

Most, amikor a kérést InnerXml kéri, a következőket kapja vissza:

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

Ha kifejezetten azt szeretné, hogy a beszúrt elem megőrizze azt a tényt, hogy névtér nélküli dokumentumból származik, akkor manuálisan kell hozzáadnia egy xmlns= "" deklarációt, és be kell szúrnia az eredményül kapott sztringet:

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

Ennek nettó hatása a következő:

  1. A névtereket nem használó dokumentumok kivágása InnerXml és beillesztése tiszta és egyszerű, és nem hoz létre "xmlns" redundanciát a sztringekben.

  2. InnerXml Több névtérrel rendelkező dokumentumok (azaz XSL-stíluslapok) kivágására és beillesztésére is használható.

  3. xmlns:xsl deklarációk automatikusan megjelennek a sztringekben, és eltűnnek a csomóponthierarchiákban.

  4. Abban az esetben, ha az alapértelmezett névteret nem tartalmazó dokumentumról egy alapértelmezett névtérrel rendelkező dokumentumra vált InnerXml , az új csomópontok felveszik az új alapértelmezett névteret.

Ha InnerXml a dokumentumban jelenleg nem definiált entitáshivatkozásokat tartalmazó szöveg van beállítva, az eredményként kapott fa üres EntityReference csomópontokat fog tartalmazni.

Ez a tulajdonság a Dokumentumobjektum-modell (DOM) Microsoft bővítménye.

A következőre érvényes: