用sax读取XML时不能读取换行符号后面的内容的问题
来源:互联网 发布:显示自己是阿里云的ip 编辑:程序博客网 时间:2024/05/01 15:07
使用SAX解析XML文档效率比较高,占用内存比较少,所以是Android中解析XML的首先方案。但使用SAX解析XML文档编写程序确不太方便,如果对SAX解析机制不太了解的话,很容易漏掉文本内容。
使用SAX解析XML主要用到的方法有以下3个:
public void startElement(String uri, String localName, String qName, Attributes attributes)
public void endElement(String s, String s1, String s2) throws SAXException
public void characters(char[] arg0, int arg1, int arg2)
从字面意思可以猜出他们的作用。startElement:SAX解析XML文档遇到一个标签时会调用该方法,endElement是当遇到一个标签结果时调用此方法,characters:当遇到一个标签之间的内容时调用此方法。
一般来说按照上面的描述,写一个Handler是很容易的。但有一个问题容易忽视。一个标签之间的字符比较多时,或者字符串中包含有”\n”等特殊字符时,就会出现字符丢失的现象。
<data>
<title>
Android用sax读取XML时
不能读取换行符号
后面的内容的问题
</title>
</data>
遇到这种问题不要怀疑SAX不能解析标签中含有”\n”或字符比较多的XML。实际上是我们写的Handler是有问题的。SAX在解析XML时,当遇到一个标签中的内容比较多时,就会多次调用characters。所以我们在写Handler时要考虑到这种情况。就不会丢字符了。以下是一种解决方案:建立一个StringBuffer.每次遇到一个标签开始时就清空这个StringBuffer。在每次调用characters时都将字符放到StringBuffer中。在endElement时,StringBuffer中的内容就是一个标签中的完整字符串。
- 用sax读取XML时不能读取换行符号后面的内容的问题
- SAX 读取xml时character()的问题
- Android学习札记10:用SAX解析XML文件时,当标签中出现换行符时可能出现读取内容为空的解决方法
- XML配置文件的读取(sax)
- 读取XML的内容
- Hibernate4.1不能读取XML的问题
- SAX读取xml文件的方法总结
- android 实用sax 读取xml文件内容
- android 实用sax 读取xml文件内容
- Android使用SAX读取XML文件内容
- c#.net不能完全读取Excel内容的问题
- 为什么从XML文件中读取的/n或者 /r/n不能在MessageBox中换行
- PHP和.net等从XML文件中读取的\n或\r\n不能换行。
- poi读取word的换行符问题
- 文件读取中换行的处理问题
- SAX 读取xml文件
- SAX读取XML文件
- SAX方式读取XML
- UML_2
- android二
- 关于iProcess启动或者关闭不成功的小心得!
- UML
- 动态添加附件,添加指定文件夹
- 用sax读取XML时不能读取换行符号后面的内容的问题
- sqrt引发的血案 牛顿法的应用
- C和指针小结前六章之第六章~指针
- AF_INET和PF_INET的区别
- 实训UML2 20110920
- 线程中的Semaphore理解
- 实验室管理的一些简单想法
- hadoop streaming 编程
- DBUtils