Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

read cdata in xml from javascript

<![CDATA[test]]> I am getting blanks.

var dataNode=Ext.DomQuery.selectNode('data',xml);
console.log(dataNode.childNodes[0].nodeValue);
console.log(dataNode.nodeValue);
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Whilst we can't say for sure without the XML that's being parsed, the usual reason for ‘getting blanks’ from childNodes[0] (firstChild) is that there is a whitespace Text node between the parent's start-tag and the node you are looking for:

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

On an XML parser that retains CDATA sections, that'll give the data element three children: a Text node containing a newline and some spaces; the CDATASection node; and another Text node with a newline.

So you could take childNodes[1], but it's a bit fragile... in particular it would break for an XML parser that turns CDATA sections into text, where you'd get a single Text child containing foo and all the whitespace. Probably better to take the textContent of the <data> element (except of course with fallback to innerText for IE).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...