android sax解析XML结点超长(大于1024)字符串取不全解决方法。
2013-01-08 18:28
369 查看
将string改为stringbuffer接收数据。
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import android.content.res.XmlResourceParser;
public class SAXParserXML {
private StringBuffer currentValue = new StringBuffer();
private Map<String,Object> map=new HashMap<String,Object>();
public void parserXML(String secretInfo){
try{
SAXParserFactory factory=SAXParserFactory.newInstance();
XMLReader reader=factory.newSAXParser().getXMLReader();
reader.setContentHandler(new parserXMLClass());
reader.parse(new InputSource(new StringReader(secretInfo)));
}catch(Exception ex){
ex.printStackTrace();
}
}
class parserXMLClass extends DefaultHandler{
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
currentValue.append(ch, start, length);
}
@Override
public void endDocument() throws SAXException {
System.out.println("***endDocument***");
}
@Override
public void startDocument() throws SAXException {
currentValue.delete(0, currentValue.length());
System.out.println("***startDocument***");
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
map.put(qName, currentValue.toString());
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if(localName.equals("infomode")){
for(int i=0;i<attributes.getLength();i++)
map.put(attributes.getLocalName(i), attributes.getValue(i));
}
}
}
public Map<String, Object> getMap() {
System.out.println("解析的数据是:"+map);
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
}
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import android.content.res.XmlResourceParser;
public class SAXParserXML {
private StringBuffer currentValue = new StringBuffer();
private Map<String,Object> map=new HashMap<String,Object>();
public void parserXML(String secretInfo){
try{
SAXParserFactory factory=SAXParserFactory.newInstance();
XMLReader reader=factory.newSAXParser().getXMLReader();
reader.setContentHandler(new parserXMLClass());
reader.parse(new InputSource(new StringReader(secretInfo)));
}catch(Exception ex){
ex.printStackTrace();
}
}
class parserXMLClass extends DefaultHandler{
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
currentValue.append(ch, start, length);
}
@Override
public void endDocument() throws SAXException {
System.out.println("***endDocument***");
}
@Override
public void startDocument() throws SAXException {
currentValue.delete(0, currentValue.length());
System.out.println("***startDocument***");
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
map.put(qName, currentValue.toString());
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if(localName.equals("infomode")){
for(int i=0;i<attributes.getLength();i++)
map.put(attributes.getLocalName(i), attributes.getValue(i));
}
}
}
public Map<String, Object> getMap() {
System.out.println("解析的数据是:"+map);
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
}
相关文章推荐
- xml-rpc不支持非asc字符串的解决方法
- android下载xml解析 文件尾出现NUL 导致解析异常的解决方法
- android 调用字符串资源 res/values/strings.xml 的几种方法
- Qt for Android编译报错提示:Install to device:No Buildfile:build.xml does not exist!解决方法
- 读取xml文件出现错误的一个解决方法(android)
- 关于android studio log日志打印信息不全的原因以及解决方法
- 安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?(总结中)
- [Debug]Android 编辑xml中Incorrect line ending错误解决方法
- android layout XML解析错误的解决方法
- Android 中从res/values/strings.xml中读取具体的字符串的方法
- Android Studio maven-metadata.xml 卡着不动原因和解决方法
- FireFox下XML对象转化成字符串的解决方法
- 安卓(android)建立项目时失败。出现AndroidManifest.xml file missing几种解决方法?
- Android 中从res/values/strings.xml中读取具体的字符串的方法
- ListBox中的字符串超长显示的解决方法
- Android fragment XML中的button找不到Onclick函数的解决方法
- 【Android】Android开发之XML文件Element XXXX must be declared的解决方法
- 安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?(总结中)
- [置顶] 【Android】Android开发之XML文件Element XXXX must be declared的解决方法
- android ScrollVIew中嵌套GridView,和ListView显示不全解决方法