2009-11-15 52 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外)。