各位牛人好;
小弟最近用MSXML4.0 sax解析一个100M 大小的XML文档的时候,发现XML中的一些节点值中含有“nbsp:”,当程序执行到该节点的时候,并没有触发characters事件,而是直接停止了解析。
XML文件结构如下:
<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<?xml-stylesheet type="text/css" href="CNAPS_DATA.css"?>
<CNAPS_DATA>
<CNAPS_BANK_DATA>
<CNAPS_BANK>
<CNAPS_BANK_BNKCODE>102536200083</CNAPS_BANK_BNKCODE>
<CNAPS_BANK_STATUS>1</CNAPS_BANK_STATUS>
<CNAPS_BANK_CATEGORY>07</CNAPS_BANK_CATEGORY>
<CNAPS_BANK_CLSCODE>102</CNAPS_BANK_CLSCODE>
<CNAPS_BANK_DRECCODE>102521009993</CNAPS_BANK_DRECCODE>
<CNAPS_BANK_NODECODE></CNAPS_BANK_NODECODE>
<CNAPS_BANK_SUPRLIST></CNAPS_BANK_SUPRLIST>
<CNAPS_BANK_PBCCODE></CNAPS_BANK_PBCCODE>
<CNAPS_BANK_CITYCODE>5362</CNAPS_BANK_CITYCODE>
<CNAPS_BANK_ACCTSTATUS></CNAPS_BANK_ACCTSTATUS>
<CNAPS_BANK_ASALTDT></CNAPS_BANK_ASALTDT>
<CNAPS_BANK_ASALTTM></CNAPS_BANK_ASALTTM>
<CNAPS_BANK_LNAME>nbsp;中国工商银行赤壁市支行营业部nbsp;</CNAPS_BANK_LNAME>
<CNAPS_BANK_SNAME>nbsp;赤壁市支行营业部nbsp;</CNAPS_BANK_SNAME>
<CNAPS_BANK_ADDR>湖北省赤壁市城西路5号</CNAPS_BANK_ADDR>
<CNAPS_BANK_POSTCODE>437300</CNAPS_BANK_POSTCODE>
<CNAPS_BANK_TEL>0175-5222078</CNAPS_BANK_TEL>
<CNAPS_BANK_EMAIL></CNAPS_BANK_EMAIL>
<CNAPS_BANK_EFFDATE>20041206</CNAPS_BANK_EFFDATE>
<CNAPS_BANK_INVDATE>29991231</CNAPS_BANK_INVDATE>
<CNAPS_BANK_ALTDATE>2004-11-30 11:03:06</CNAPS_BANK_ALTDATE>
<CNAPS_BANK_ALTTYPE>2</CNAPS_BANK_ALTTYPE>
<CNAPS_BANK_ALTISSNO>20040026</CNAPS_BANK_ALTISSNO>
<CNAPS_BANK_REMARK></CNAPS_BANK_REMARK>
</CNAPS_BANK>
</CNAPS_BANK_DATA>
</CNAPS_DATA>在<CNAPS_BANK_LNAME>节点的后面会有"nbsp;",这个表示空格,如果将其忽略,主要是在取<CNAPS_BANK_LNAME>节点值的时候并没有进入到characters事件中,而是直接停止了解析,希望牛人给出一个解决方案,不胜感激!
小弟最近用MSXML4.0 sax解析一个100M 大小的XML文档的时候,发现XML中的一些节点值中含有“nbsp:”,当程序执行到该节点的时候,并没有触发characters事件,而是直接停止了解析。
XML文件结构如下:
<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<?xml-stylesheet type="text/css" href="CNAPS_DATA.css"?>
<CNAPS_DATA>
<CNAPS_BANK_DATA>
<CNAPS_BANK>
<CNAPS_BANK_BNKCODE>102536200083</CNAPS_BANK_BNKCODE>
<CNAPS_BANK_STATUS>1</CNAPS_BANK_STATUS>
<CNAPS_BANK_CATEGORY>07</CNAPS_BANK_CATEGORY>
<CNAPS_BANK_CLSCODE>102</CNAPS_BANK_CLSCODE>
<CNAPS_BANK_DRECCODE>102521009993</CNAPS_BANK_DRECCODE>
<CNAPS_BANK_NODECODE></CNAPS_BANK_NODECODE>
<CNAPS_BANK_SUPRLIST></CNAPS_BANK_SUPRLIST>
<CNAPS_BANK_PBCCODE></CNAPS_BANK_PBCCODE>
<CNAPS_BANK_CITYCODE>5362</CNAPS_BANK_CITYCODE>
<CNAPS_BANK_ACCTSTATUS></CNAPS_BANK_ACCTSTATUS>
<CNAPS_BANK_ASALTDT></CNAPS_BANK_ASALTDT>
<CNAPS_BANK_ASALTTM></CNAPS_BANK_ASALTTM>
<CNAPS_BANK_LNAME>nbsp;中国工商银行赤壁市支行营业部nbsp;</CNAPS_BANK_LNAME>
<CNAPS_BANK_SNAME>nbsp;赤壁市支行营业部nbsp;</CNAPS_BANK_SNAME>
<CNAPS_BANK_ADDR>湖北省赤壁市城西路5号</CNAPS_BANK_ADDR>
<CNAPS_BANK_POSTCODE>437300</CNAPS_BANK_POSTCODE>
<CNAPS_BANK_TEL>0175-5222078</CNAPS_BANK_TEL>
<CNAPS_BANK_EMAIL></CNAPS_BANK_EMAIL>
<CNAPS_BANK_EFFDATE>20041206</CNAPS_BANK_EFFDATE>
<CNAPS_BANK_INVDATE>29991231</CNAPS_BANK_INVDATE>
<CNAPS_BANK_ALTDATE>2004-11-30 11:03:06</CNAPS_BANK_ALTDATE>
<CNAPS_BANK_ALTTYPE>2</CNAPS_BANK_ALTTYPE>
<CNAPS_BANK_ALTISSNO>20040026</CNAPS_BANK_ALTISSNO>
<CNAPS_BANK_REMARK></CNAPS_BANK_REMARK>
</CNAPS_BANK>
</CNAPS_BANK_DATA>
</CNAPS_DATA>在<CNAPS_BANK_LNAME>节点的后面会有"nbsp;",这个表示空格,如果将其忽略,主要是在取<CNAPS_BANK_LNAME>节点值的时候并没有进入到characters事件中,而是直接停止了解析,希望牛人给出一个解决方案,不胜感激!
不知道行不行,如果文件大可能影响效率
要不是就自己用正则写一个XML解析
实在不能去掉,就用 来代替
用 来替代。MSXML解析器并不认识nbsp这个实体。