关于在Firefox下CDATA节的问题

jc_registration 2012-05-11 01:05:35
以下代码运行在Firefox内!


...
<case>
<data>
<![CDATA[
json.data();
]]>
</data>
</case>
...


这样一个节。


var dataNode = xmldoc.evaluate("data", caseNode, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
dataNode = dataNode && dataNode.invalidIteratorState === false && dataNode.singleNodeValue;

dataNode.firstChild.nodeValue; // <--------


我想取CDATA内的数据。但是发现取的是错误的。
在firebug下测试后发现,dataNode不是只有一个child,而是3个!!, 3个都是TextNode
第一个的nodeValue是\n\t\t\t\t (\t是我打出来,显示的时候是TAB)
第二个的nodeValue是CDATA内的值
第三个的nodeValue是\n\t\t\t\t (同1)

然后我想到了应该是由于ignoreWhitespace之类的引起,但是我调试后没有发现xmldoc有ignoreWhitespace这样的或类似的属性。
所以,我该怎么做?
...全文
39 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
jc_registration 2012-05-14
  • 打赏
  • 举报
回复
算了。是这个问题太难了没人回答还是太简单了懒的回答??

我目前用的方法是循环children并找出nodetype为4的节点,4表示cdata节。

哎。太冷了。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧