2009-11-15 54 views
-3

<![CDATA [测试]] > 我得到空白。从javascript中读取cdata中的xml

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

我们可以看到有问题的XML? – 2009-11-15 00:36:29

+0

毫无疑问,没有背景,没有任何东西。 – 2009-11-15 05:53:27

回答

4

虽然我们不能没有正在解析的XML肯定地说,通常的原因来自childNodes[0]firstChild)“获得空白”是有父母的开始标记之间的空白文本节点您正在寻找的节点:

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

在保留CDATA节的XML解析器,那将给予data元素三个孩子:包含新行和一些空格的文本节点; CDATASection节点;和另一个带有换行符的Text节点。

所以,你可以采取childNodes[1],但它是一个有点脆弱......尤其是它会打破XML解析器,轮流CDATA段成文本,在那里你会得到包含foo,所有的单个文本的孩子空白。可能更好地采取<data>元素的textContent(当然除IE回退到innerText外)。