XmlDocument.InnerXml Propriété

Définition

Obtient ou définit le balisage représentant les enfants du nœud actuel.

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

Valeur de propriété

Balisage des enfants du nœud actuel.

Exceptions

Le code XML spécifié pendant la définition de cette propriété n’est pas bien formé.

Remarques

La définition de cette propriété remplace les enfants du nœud par le contenu analysé de la chaîne donnée. L'analyse est effectuée dans le contexte de l'espace de noms actuel.

InnerXml supprime les déclarations d’espaces de noms redondantes. Par conséquent, de nombreuses opérations de couper-coller n'augmentent pas la taille du document avec des déclarations d'espaces de noms redondantes. Considérez le document XSL suivant :

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

La InnerXml propriété sur le nœud de feuille de style retourne la chaîne suivante :

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

Notez la déclaration d’espace de noms xmlns:xsl supplémentaire utilisée pour préserver l’identité du nœud. Si vous réinsèrez cette chaîne XML interne, vous récupérerez votre document d’origine. En d’autres termes, InnerXml reconnaît que la déclaration d’espace de noms xmlns:xsl est redondante, étant donné que l’élément xsl:stylesheet parent a déjà la déclaration d’espace de noms xmlns:xsl, et donc la supprime.

Si vous passez InnerXml d’un document sans espace de noms par défaut à un document avec un espace de noms par défaut, le comportement est un peu différent. Considérez la chaîne XML suivante :

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

InnerXml retourne une chaîne XML simple sans déclarations d’espace de noms :

<item>123</item>

Si vous insérez ensuite cette chaîne dans un document qui a un espace de noms par défaut, tel que :

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

InnerXml analyse la chaîne dans le contexte, et les nouveaux nœuds récupèrent l’espace de noms urn:1. Le résultat ressemble à ceci :

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

Maintenant, lorsque vous demandez le InnerXml , vous récupérez les éléments suivants :

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

Si vous souhaitez explicitement que l’élément inséré conserve le fait qu’il provient d’un document sans espace de noms, vous devez ajouter manuellement une déclaration xmlns= «  » et insérer la chaîne résultante :

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

L’effet net de tout cela est le suivant :

  1. Le découpage-collage InnerXml parmi les documents qui n’utilisent pas d’espaces de noms est propre et simple et ne crée pas de redondance « xmlns » dans vos chaînes.

  2. InnerXml peut également être utilisé pour couper et coller entre des documents qui ont plusieurs espaces de noms (c’est-à-dire des feuilles de style XSL).

  3. Les déclarations xmlns:xsl apparaissent automatiquement dans vos chaînes et disparaissent dans vos hiérarchies de nœuds.

  4. Dans le cas où vous passez InnerXml d’un document qui n’a pas d’espace de noms par défaut à un document qui n’a pas d’espace de noms par défaut, les nouveaux nœuds sélectionnent le nouvel espace de noms par défaut.

Si InnerXml est défini avec du texte contenant des références d’entité qui ne sont pas définies actuellement dans le document, l’arborescence résultante contiendra des nœuds EntityReference vides.

Cette propriété est une extension Microsoft du modèle DOM (Document Object Model).

S’applique à