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é lors de 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 d’espace de noms actuel.

InnerXml supprime les déclarations d’espace de noms redondantes. Par conséquent, de nombreuses opérations couper-coller n’augmentent pas la taille de votre document avec des déclarations d’espace 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 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 conserver l’identité du nœud. Si vous réinscrivez 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 le supprime donc.

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. Tenez compte de 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, par exemple :

<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 retour suivant :

<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 qui n’avait pas d’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. Couper et coller 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 a un espace de noms par défaut, les nouveaux nœuds récupèrent le nouvel espace de noms par défaut.

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

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

S’applique à