2009-11-15 8 views
-3

<! [CDATA [test]] > Je reçois des espaces.lire cdata en XML à partir de javascript

 
var dataNode=Ext.DomQuery.selectNode('data',xml); 
console.log(dataNode.childNodes[0].nodeValue); 
console.log(dataNode.nodeValue); 
+0

Peut-on voir le XML en question? –

+0

Il n'y a pas de question, pas de contexte, pas de rien. –

Répondre

4

Alors que nous ne pouvons pas dire avec certitude sans XML qui est en cours d'analyse, la raison habituelle pour « obtenir des blancs » de childNodes[0] (firstChild) est qu'il ya un nœud texte contenant des espaces entre balise de début du parent et le nœud que vous recherchez:

<data> 
    <![CDATA[ foo ]]> 
</data> 

Sur un analyseur XML qui conserve des sections CDATA, qui va donner à l'élément data trois enfants: un nœud de texte contenant un saut de ligne et des espaces; le noeud CDATASection; et un autre noeud Texte avec un saut de ligne.

Vous pouvez prendre childNodes[1], mais il est un peu fragile ... en particulier, il se briserait d'un analyseur XML qui transforme les sections CDATA en texte, où vous obtiendriez un seul enfant de texte contenant foo et tous les espace blanc. Probablement préférable de prendre le textContent de l'élément <data> (sauf bien sûr avec le repli à innerText pour IE).