XmlDocument.InnerXml Właściwość

Definicja

Pobiera lub ustawia znacznik reprezentujący elementy podrzędne bieżącego węzła.

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

Wartość właściwości

String

Znaczniki elementów podrzędnych bieżącego węzła.

Wyjątki

Kod XML określony podczas ustawiania tej właściwości nie jest poprawnie sformułowany.

Uwagi

Ustawienie tej właściwości zastępuje elementy podrzędne węzła analizowaną zawartością danego ciągu. Analizowanie odbywa się w bieżącym kontekście przestrzeni nazw.

InnerXml usuwa nadmiarowe deklaracje przestrzeni nazw. W związku z tym liczne operacje wycinania i wklejania nie zwiększają rozmiaru dokumentu przy użyciu nadmiarowych deklaracji przestrzeni nazw. Rozważmy następujący dokument XSL:

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

Właściwość InnerXml w węźle arkusza stylów zwraca następujący ciąg:

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

Zwróć uwagę na dodatkową deklarację przestrzeni nazw xmlns:xsl, która jest używana do zachowania tożsamości węzła. Jeśli ponownie wstawisz ten wewnętrzny ciąg XML, wrócisz do oryginalnego dokumentu. Innymi słowy, rozpoznaje, InnerXml że deklaracja przestrzeni nazw xmlns:xsl jest nadmiarowa, biorąc pod uwagę, że nadrzędny element xsl:stylesheet ma już deklarację przestrzeni nazw xmlns:xsl, a zatem usuwa ją.

W przypadku przejścia InnerXml z dokumentu bez domyślnej przestrzeni nazw do dokumentu z domyślną przestrzenią nazw zachowanie jest nieco inne. Rozważmy następujący ciąg XML:

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

InnerXml Zwraca zwykły ciąg XML bez deklaracji przestrzeni nazw:

<item>123</item>  

Jeśli następnie wstawisz ten ciąg do dokumentu, który ma domyślną przestrzeń nazw, na przykład:

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

InnerXml Analizuje ciąg w kontekście, a nowe węzły pobierają przestrzeń nazw urn:1. Wynik wygląda następująco:

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

Teraz, gdy poprosisz o InnerXml zwrot następujących elementów:

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

Jeśli jawnie chcesz, aby wstawiony element zachował fakt, że pochodzi on z dokumentu, który nie miał przestrzeni nazw, musisz ręcznie dodać deklarację xmlns= "" i wstawić wynikowy ciąg:

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

Efekt netto tego wszystkiego jest następujący:

  1. Wycinanie i wklejanie InnerXml między dokumentami, które nie używają przestrzeni nazw, jest czyste i proste i nie tworzy nadmiarowości "xmlns" w ciągach.

  2. InnerXml Można również użyć do wycinania i wklejania między dokumentami, które mają więcej niż jedną przestrzeń nazw (czyli arkusze stylów XSL).

  3. xmlns:deklaracje xsl są automatycznie wyświetlane w ciągach i znikają w hierarchii węzłów.

  4. W przypadku przejścia InnerXml z dokumentu, który nie ma domyślnej przestrzeni nazw do dokumentu, który ma domyślną przestrzeń nazw, nowe węzły będą odbierać nową domyślną przestrzeń nazw.

Jeśli InnerXml parametr jest ustawiony z tekstem zawierającym odwołania do jednostek, które nie są obecnie zdefiniowane w dokumencie, wynikowe drzewo będzie zawierać puste węzły EntityReference.

Ta właściwość jest rozszerzeniem firmy Microsoft do modelu obiektów dokumentów (DOM).

Dotyczy