XmlDocument.InnerXml Eigenschaft

Definition

Ruft das Markup ab, das die untergeordneten Elemente des aktuellen Knotens darstellt, oder legt dieses fest.

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

Eigenschaftswert

String

Das Markup der untergeordneten Elemente des aktuellen Knotens.

Ausnahmen

Der beim Festlegen dieser Eigenschaft angegebene XML-Code ist nicht ordnungsgemäß formatiert.

Hinweise

Durch Festlegen dieser Eigenschaft werden die untergeordneten Elemente des Knotens durch den analysierten Inhalt der angegebenen Zeichenfolge ersetzt. Die Analyse wird im Kontext des aktuellen Namespaces durchgeführt.

InnerXml entfernt redundante Namespacedeklarationen. Daher wird die Größe des Dokuments nicht mit redundanten Namespacedeklarationen erhöht, wenn zahlreiche Ausschneide- und Einfügevorgänge erfolgen. Betrachten Sie das folgende XSL-Dokument:

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

Die InnerXml Eigenschaft auf dem Stylesheetknoten gibt die folgende Zeichenfolge zurück:

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

Beachten Sie die zusätzliche xmlns:xsl-Namespacedeklaration, die zum Beibehalten der Knotenidentität verwendet wird. Wenn Sie diese innere XML-Zeichenfolge erneut einfügen, erhalten Sie Ihr ursprüngliches Dokument zurück. Mit anderen Worten, erkennt, InnerXml dass die xmlns:xsl-Namespacedeklaration redundant ist, da das übergeordnete xsl:stylesheet-Element bereits die xmlns:xsl-Namespacedeklaration hat und es daher entfernt.

Wenn Sie von einem Dokument ohne Standardnamespace in ein Dokument mit einem Standardnamespace wechseln InnerXml , ist das Verhalten etwas anders. Berücksichtigen Sie die folgende XML-Zeichenfolge:

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

InnerXml gibt eine einfache XML-Zeichenfolge ohne Namespacedeklarationen zurück:

<item>123</item>  

Wenn Sie diese Zeichenfolge dann in ein Dokument einfügen, das über einen Standardnamespace verfügt, z. B. folgendes:

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

InnerXml analysiert die Zeichenfolge im Kontext, und die neuen Knoten nehmen den urn:1-Namespace auf. Das Ergebnis sieht wie folgt aus:

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

Wenn Sie jetzt nach der Frage fragen, InnerXml erhalten Sie Folgendes:

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

Wenn Das eingefügte Element explizit beibehalten werden soll, dass es aus einem Dokument stammt, das keinen Namespace hatte, müssen Sie manuell eine xmlns= "" -Deklaration hinzufügen und die resultierende Zeichenfolge einfügen:

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

Der Nettoeffekt aller Folgenden:

  1. Das Schneiden und Einfügen InnerXml zwischen Dokumenten, die keine Namespaces verwenden, ist sauber und einfach und erstellt keine Redundanz von "xmlns" in Ihren Zeichenfolgen.

  2. InnerXml kann auch zum Ausschneiden und Einfügen zwischen Dokumenten verwendet werden, die mehrere Namespaces aufweisen (d. h. XSL-Stylesheets).

  3. xmlns:xsl-Deklarationen werden automatisch in Ihren Zeichenfolgen angezeigt und in Ihren Knotenhierarchien ausgeblendet.

  4. Wenn Sie von einem Dokument wechseln InnerXml , das keinen Standardnamespace in ein Dokument enthält, das über einen Standardnamespace verfügt, nimmt die neuen Knoten den neuen Standardnamespace auf.

Wenn InnerXml Text festgelegt ist, der Entitätsverweise enthält, die derzeit nicht im Dokument definiert sind, enthält die resultierende Struktur leere EntityReference-Knoten.

Diese Eigenschaft ist eine Microsoft-Erweiterung des Dokumentobjektmodells (DOM).

Gilt für