2010-08-25 4 views
2

J'ai un élément XML qui ressemble à ceci:Question sur XmlElement.InnerText et les espaces

<content locale="en"> </content> 

Le texte entre les choses entre crochets est constitué d'un seul caractère d'espace. Lorsque je charge le XML dans un regard XmlDocument à l'objet XmlElement pour l'élément ci-dessus, je pense:

contentElement.InnerText.Length == 1; // InnerText should be a single space character 

mais ce que je reçois est

contentElement.InnerText.Length == 0; 

À supposer que ce n'est pas un bogue dans DOM de Microsoft implémentation, est-ce une caractéristique de la spécification XML/DOM que je ne connais pas? Si oui, ai-je d'autres options que d'ajouter des caractères d'espaces vides lors de l'écriture du XML?

Répondre

1

Si vous voulez avoir des espaces conservés à l'intérieur de votre fichier XML après avoir été analysé à l'aide s'il vous plaît envisager <![CDATA[ et ]]> section pour laisser parser savoir qu'il devrait prendre ces données de caractère littéralement ...

+0

Cela fonctionne certainement; Merci. –

0

Je ne sais pas à propos de .net en particulier, mais les spécifications xml ne sont pas claires sur les "nœuds d'espace" (nœuds de texte avec rien d'autre que des espaces.) La plupart des bibliothèques ont une méthode pour démarrer/arrêter (le contraire du traitement par défaut).

La raison pour laquelle les espaces blancs n'ont pas de comportement clairement défini est que vous aurez par inadvertance beaucoup de les lorsque vous utilisez un format propre:

<outerTag> 
    <innerTag /> 
</outerTag> 

Cela a en réalité deux nœuds d'espace!