node.js xmlreader无法获取CDATA区问题修复
Email:longsu2010 at yeah dot net---- 2013-05-02 update ----这个问题在写本博的同时已经提交给xmlreader作者,该问题作者已经修复,请直接使用npm更新。我一不小心竟然成为xmlreader的代码贡献者,真是惭愧。---- update end ----之前写了一篇关于node.js解析xml的文章,写的
Email:longsu2010 at yeah dot net
---- 2013-05-02 update ----
这个问题在写本博的同时已经提交给xmlreader作者,该问题作者已经修复,请直接使用npm更新。
我一不小心竟然成为xmlreader的代码贡献者,真是惭愧。
---- update end ----
之前写了一篇关于node.js解析xml的文章,写的是xmlreader这个模块的使用,原文见如下链接:
"http://blog.csdn.net/tt361/article/details/8777675"xmlreader是对sax的进一步封装了,用起来很简单。前几天发现xmlreader是不会处理CDATA的,所以有些数据可能就获取不到(真是的过程是发现数据获取不到,之后发现xml中有CDATA,之后看了xmlreader源码发现并未处理CDATA)。
本文是介绍我如何解决这个问题,若修改后xmlreader仍不能满足你的需求,那么建议使用sax模块。
读node.js模块的一般步骤为,到模块所在目录下找到package.json,看看main配置项找到模块的入口文件。我们就到xmlreader目录下看package.json,发现入口文件为xmlreader.js。
在xmlreader.js中找到saxparser.ontext = function(){/* …… */},在其前边增加如下代码(处理CDATA)
saxparser.oncdata = function(cdata){
// add the function text() to the object to return the cdata value:
object.text = function(){
return cdata;
}
};
之后将saxparser.ontext = function(){/* …… */}的实现改为如下代码
saxparser.ontext = function (text) {
// add the function text() to the object to return the text value:
!object.text ? object.text = function(){
return text;
} : null;
};
这样在遇到CDATA的时候获取文本就会返回CDATA块中的内容。
这个页面的链接为 http://blog.csdn.net/tt361/article/details/8848028
这个问题的进展可以关注如下网址https://github.com/SamDecrock/node-xmlreader/issues/1。
----2013-04-25 update
补充一点xmlreader当前版本为0.2.2
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)