node.js 解析xml BOM问题(xmlreader sax.js)
Email:longsu2010 at yeah dot net
之前写了两篇文章关于node.js解析xml,说的是xmlreader,文章如下
node.js解析xml(xmlreader)
node.js xmlreader无法获取CDATA区问题修复
今天程序抛出一个错误,如下:
Error: Non-whitespace before first tag.
错误是在sax模块中抛出来的(xmlreader基于sax),意思是说第一个标签前有非空白符。
我打开文件看了下,没有多余的字符,绝对没有。之后就想到了BOM(对了,我的xml文件编码是UTF-8的),十六进制一看还真是有BOM,去掉BOM之后程序顺利的执行了。
原因找到了,之后我就在将字符串传给xmlreader之前写了如下的一段代码。
xml_string = xml_string.replace(/^\ufeff/i, "").replace(/^\ufffe/i, "");
关于BOM是个啥可以参考
http://www.w3.org/International/questions/qa-utf8-bom
温馨提示:
写程序有错误日志是很重要的,可以很快定位到系统出现异常的原因。