XmlDocument.InnerXml Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 :
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.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).Les déclarations xmlns:xsl apparaissent automatiquement dans vos chaînes et disparaissent dans vos hiérarchies de nœuds.
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).