Condividi tramite


XmlDocument.InnerXml Proprietà

Definizione

Ottiene o imposta il markup che rappresenta gli elementi figlio del nodo corrente.

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

Valore della proprietà

Markup degli elementi figlio del nodo corrente.

Eccezioni

Il formato del file XML specificato al momento dell'impostazione della proprietà non è corretto.

Commenti

L'impostazione di questa proprietà sostituisce gli elementi figlio del nodo con il contenuto analizzato della stringa specificata. L'analisi viene eseguita nel contesto dello spazio dei nomi corrente.

InnerXml rimuove le dichiarazioni dello spazio dei nomi ridondanti. Di conseguenza, anche in caso di numerose operazioni di taglia e incolla, le dimensioni del documento non aumenteranno a causa di dichiarazioni ridondanti dello spazio dei nomi. Si consideri il documento XSL seguente:

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

La InnerXml proprietà nel nodo del foglio di stile restituisce la stringa seguente:

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

Si noti la dichiarazione dello spazio dei nomi xmlns:xsl aggiuntiva usata per mantenere l'identità del nodo. Se si reinserirà questa stringa XML interna, verrà restituito il documento originale. In altre parole, InnerXml riconosce che la dichiarazione dello spazio dei nomi xmlns:xsl è ridondante, dato che l'elemento padre xsl:stylesheet dispone già della dichiarazione dello spazio dei nomi xmlns:xsl e la rimuove.

Se si passa InnerXml da un documento senza spazio dei nomi predefinito a un documento con uno spazio dei nomi predefinito, il comportamento è leggermente diverso. Si consideri la stringa XML seguente:

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

InnerXml restituisce una stringa XML normale senza dichiarazioni di spazio dei nomi:

<item>123</item>

Se quindi si inserisce questa stringa in un documento con uno spazio dei nomi predefinito, ad esempio quanto segue:

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

InnerXml analizza la stringa nel contesto e i nuovi nodi selezionano lo spazio dei nomi urn:1. Il risultato è simile al seguente:

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

A questo momento, quando si chiede di InnerXml ottenere di nuovo quanto segue:

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

Se si vuole che l'elemento inserito mantenga in modo esplicito il fatto che provenisse da un documento senza spazio dei nomi, è necessario aggiungere manualmente una dichiarazione xmlns= "" e inserire la stringa risultante:

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

L'effetto netto di tutto ciò è il seguente:

  1. Il taglio e incolla tra InnerXml i documenti che non usano spazi dei nomi è pulito e semplice e non crea ridondanza "xmlns" nelle stringhe.

  2. InnerXml può essere usato anche per tagliare e incollare tra documenti con più spazi dei nomi (ovvero fogli di stile XSL).

  3. Le dichiarazioni xmlns:xsl vengono visualizzate automaticamente nelle stringhe e scompaiono nelle gerarchie del nodo.

  4. Nel caso in cui si passi InnerXml da un documento senza spazio dei nomi predefinito a un documento con uno spazio dei nomi predefinito, i nuovi nodi selezioneranno il nuovo spazio dei nomi predefinito.

Se InnerXml è impostato con testo contenente riferimenti a entità non definiti nel documento, l'albero risultante conterrà nodi EntityReference vuoti.

Questa proprietà è un'estensione Microsoft di Document Object Model (DOM).

Si applica a