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.
Dient zum Abrufen oder Festlegen des Markups, das die untergeordneten Elemente des aktuellen Knotens darstellt.
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 XML-Code, der beim Festlegen dieser Eigenschaft angegeben wurde, ist nicht wohlgeformt.
Hinweise
Durch Festlegen dieser Eigenschaft werden die untergeordneten Elemente des Knotens durch den analysierten Inhalt der angegebenen Zeichenfolge ersetzt. Die Analyse erfolgt im aktuellen Namespacekontext.
InnerXml entfernt redundante Namespacedeklarationen. Daher erhöhen zahlreiche Ausschneid- und Einfügevorgänge nicht die Größe Ihres Dokuments durch überflüssige Namespace-Deklarationen. 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 Stylesheet-Knoten 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. Anders ausgedrückt: Erkennt an, InnerXml dass die xmlns:xsl-Namespacedeklaration redundant ist, da das übergeordnete xsl:stylesheet-Element bereits über die xmlns:xsl-Namespacedeklaration verfügt und daher entfernt.
Wenn Sie von einem Dokument ohne Standardnamespace zu einem 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 InnerXml Frage fragen, erhalten Sie Folgendes:
<item xmlns="urn:1">123</item>
Wenn Das eingefügte Element explizit die Tatsache beibehalten 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 all dies ist wie folgt:
Das Ausschneiden und Einfügen
InnerXmlzwischen Dokumenten, die keine Namespaces verwenden, ist sauber und einfach und erstellt keine "xmlns"-Redundanz in Ihren Zeichenfolgen.InnerXmlkann 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 aus einem Dokument wechseln
InnerXml, das keinen Standardnamespace enthält, in ein Dokument, das über einen Standardnamespace verfügt, übernimmt die neuen Knoten den neuen Standardnamespace.
Wenn InnerXml dieser Wert mit 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 für das Document Object Model (DOM).