XmlDocument.InnerXml Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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:
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.InnerXml
kann auch zum Ausschneiden und Einfügen zwischen Dokumenten verwendet werden, die mehrere Namespaces aufweisen (d. h. XSL-Stylesheets).xmlns:xsl-Deklarationen werden automatisch in Ihren Zeichenfolgen angezeigt und in Ihren Knotenhierarchien ausgeblendet.
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).