XmlDocument.InnerXml Egenskap

Definition

Hämtar eller anger markering som representerar underordnade noder för den aktuella noden.

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

Egenskapsvärde

Markering av underordnade till den aktuella noden.

Undantag

DEN XML som anges när du anger den här egenskapen är inte välformulerad.

Kommentarer

Om du anger den här egenskapen ersätts underordnade noder med det tolkade innehållet i den angivna strängen. Parsningen görs i den aktuella namnområdeskontexten.

InnerXml tar bort redundanta namnområdesdeklarationer. Därför ökar inte många klipp-och-klistra-åtgärder storleken på dokumentet med redundanta namnområdesdeklarationer. Överväg följande XSL-dokument:

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

Egenskapen InnerXml på formatmallsnoden returnerar följande sträng:

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

Observera den ytterligare xmlns:xsl-namnområdesdeklarationen som används för att bevara nodidentiteten. Om du infogar den här inre XML-strängen igen får du tillbaka det ursprungliga dokumentet. Med andra ord InnerXml , identifierar att xmlns:xsl-namnområdesdeklarationen är redundant, eftersom det överordnade xsl:stylesheet-elementet redan har xmlns:xsl-namnområdesdeklarationen och därför tar bort den.

Om du flyttar InnerXml från ett dokument utan standardnamnområde till ett dokument med ett standardnamnområde är beteendet lite annorlunda. Överväg följande XML-sträng:

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

InnerXml returnerar en vanlig XML-sträng utan namnområdesdeklarationer:

<item>123</item>

Om du sedan infogar den här strängen i ett dokument som har ett standardnamnområde, till exempel följande:

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

InnerXml parsar strängen i kontext och de nya noderna hämtar namnområdet urn:1. Resultatet ser ut så här:

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

Nu när du ber om att InnerXml få tillbaka följande:

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

Om du uttryckligen vill att det infogade objektet ska bevara det faktum att det kom från ett dokument som inte hade något namnområde måste du manuellt lägga till en xmlns= ""-deklaration och infoga den resulterande strängen:

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

Nettoeffekten av allt detta är följande:

  1. Att klippa ut och klistra in InnerXml dokument som inte använder namnområden är rent och enkelt och skapar inte "xmlns"-redundans i dina strängar.

  2. InnerXml kan också användas för att klippa ut och klistra in mellan dokument som har mer än ett namnområde (det vill:s XSL-formatmallar).

  3. xmlns:xsl-deklarationer visas automatiskt i dina strängar och försvinner i nodhierarkierna.

  4. Om du flyttar InnerXml från ett dokument som inte har något standardnamnområde till ett dokument som har ett standardnamnområde, hämtar de nya noderna det nya standardnamnområdet.

Om InnerXml anges med text som innehåller entitetsreferenser som för närvarande inte har definierats i dokumentet innehåller det resulterande trädet tomma EntityReference-noder.

Den här egenskapen är ett Microsoft tillägg till dokumentobjektmodellen (DOM).

Gäller för