安卓SAX解析XML出现二次解析-------矫正我们错误的认知
2014-12-12 16:58
302 查看
问题:一个标签解析了俩次
贴图为证吧:
targetPositionX0与targetPositionY0在XML文件中个数完全一致,但是解析时,Y0却经过了俩次解析。后面是字符数(不影响)。
网上关于如何用Sax解析XML到处都是,我在之前的文章中也提到过,但经过今天的问题,才知道,之前的方法不够完整。下面
就说下问题出现的原因吧。
Sax一次只能解析2k左右的文件,所以当标签中内容超过这个大小时,就要进行第二次解析。体现在characters()函数取标签中内
容,一次取不完,所以才出现上述问题。接下来再看下这个图
解释:dd是在endElement()函数中写的,我们可以看出当俩次characters执行完毕后,才继续向下面执行。
正确的解析方法:
贴图为证吧:
targetPositionX0与targetPositionY0在XML文件中个数完全一致,但是解析时,Y0却经过了俩次解析。后面是字符数(不影响)。
网上关于如何用Sax解析XML到处都是,我在之前的文章中也提到过,但经过今天的问题,才知道,之前的方法不够完整。下面
就说下问题出现的原因吧。
Sax一次只能解析2k左右的文件,所以当标签中内容超过这个大小时,就要进行第二次解析。体现在characters()函数取标签中内
容,一次取不完,所以才出现上述问题。接下来再看下这个图
解释:dd是在endElement()函数中写的,我们可以看出当俩次characters执行完毕后,才继续向下面执行。
正确的解析方法:
private StringBuilder sb = new StringBuilder(); @Override public void characters(char[] ch, int start, int length) throws SAXException { super.characters(ch, start, length); //将内容存到sb中 sb.append(ch, start, length); } @Override public void startDocument() throws SAXException { super.startDocument(); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { super.startElement(uri, localName, qName, attributes); //开始新标签先清空历史数据 sb.setLength(0); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { super.endElement(uri, localName, qName); //(4)原来在characters中取值,现改在此取值 String value = sb.toString(); //做相应的处理操作 } @Override public void endDocument() throws SAXException { super.endDocument(); } }
相关文章推荐
- python Python 解析xml文件出现错误xml.parsers.expat.ExpatError: unknown encoding 的解决
- Discuz! 安装插件和风格出现错误提示"数据类型错误,请返回。 php xml 正确的解析方式
- 【转】安卓下微信内置浏览器视频出现解析错误
- 解决ajax程序访问服务器返回的XML文件时, firebug出现: XML 解析错误问题
- 用dom或者sax解析xml运行出现错误Content is not allowed in prol
- 安卓安装apk时出现“解析程序包时出现错误” 的解决方法
- 使用mybatis generator时出现xml解析错误:XML Parser Errors occurred
- Ajax代码正确却出现“XML解析错误:未找到元素 位置:moz-nullprincipal”错误
- xml解析出现的错误
- Firefox升级后出现“XML解析错误”错误的解决方法
- firefox一打开就出现了XML解析错误
- dom4j解析XML时出现"java.lang.noclassdeffounderror: org/jaxen/jaxenexception"错误
- sax解析xml文件出现编码错误问题Invalid byte 1 of 1-byte UTF-8 sequence.
- dom4j解析XML时出现"java.lang.noclassdeffounderror: org/jaxen/jaxenexception"错误
- jdom解析xml文件出现的一些错误
- 安卓下微信内置浏览器视频出现解析错误
- 今天用PHP解析xml时出现如下错误:php Fatal error: Class 'DOMDocument' not found。 环境:CentOS 5.5; PHP 5.3.8 解决方法:
- opencv 使用cvload加载xml出现错误原因解析及方法
- 在进行xml解析时,出现XmlPullParserException:Unexpected token(position:unknown @2:1错误
- 解析xml出现Can't create default XMLReader; is system property org.xml.sax.driver set?错误