SAX解析学习总结
来源:互联网 发布:佳能mg3580清零软件 编辑:程序博客网 时间:2024/05/01 06:11
由于DOM解析时要一次把所有的内容全读出来,所以其不适合进行大数据的操作
SAX解析
1.首先要定义一个SAX 解析器,及一个存储xml信息的类。
1)定义SAX解析器(记为MySAX)
2)重写startDocument(),startElement(),characters(),endElements()方法
解析器的主要功能是将指定xml文档中的数据取出并将数据封装成自己定义的类的对象的集合,最后将所有数据返回.
SAX解析
1.指定要解析的文件路径。(记为file)
2.建立SAX解析工厂
SAXParserFactory factory = SAXParserFactory.newInstance();
3.构造解析器
SAXParser parser = null;
MySax sax = new MySax();
parser = factory.newSAXParser();
4.解析xml使用DefaultHandler
parser.parser(file,sax);
5.定义集合接收解析内容。
定义SAX解析器(记为MySAX)
public class MySax extends DefaultHandler {
private List<LinkMan> all = null;
private String elementname = null;
private LinkMan man = null;
重写方法
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
this.all = new ArrayList<LinkMan>();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
if("linkman".equals(localName))
{
this.man = new LinkMan();
}
this.elementname = localName;
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if("linkman".equals(localName))
{
this.all.add(this.man);
this.man = null;
}
this.elementname = null;
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if(this.elementname != null)
{
String data = new String(ch,start,length);//取的文字信息
if("name".equals(this.elementname))
{
this.man.setName(data);
}
else if("email".equals(this.elementname))
{
this.man.setEmail(data);
}
}
}
public List<LinkMan> getAll() {
return this.all;
}
}
public class MainActivity extends Activity {
private TextView name = null;
private TextView email = null;
private Button but = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.but = (Button)findViewById(R.id.but);
this.email = (TextView)findViewById(R.id.name);
this.name = (TextView)findViewById(R.id.email);
this.but.setOnClickListener(new myonclicklisten());
}
private class myonclicklisten implements OnClickListener{
@Override
public void onClick(View v) {
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
return;
}
File file = new File(Environment.getExternalStorageDirectory().toString()
+File.separator
+"mldndata"
+File.separator
+"member.xml"
);
if(!file.exists())
{
return;
}
//建立SAX解析工厂
SAXParserFactory factory = SAXParserFactory.newInstance();
//构造解析器
SAXParser parser = null;
MySax sax = new MySax();
try {
parser = factory.newSAXParser();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//解析xml使用DefaultHandler
try {
parser.parse(file, sax);
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//返回信息
List<LinkMan> all = sax.getAll();
MainActivity.this.name.setText(all.get(0).getName());
MainActivity.this.email.setText(all.get(0).getEmail());
}
}
}
- SAX解析学习总结
- XML学习总结-SAX解析-(三)
- XML学习《SAX解析》
- 学习sax解析xml
- SAX解析XML:学习
- XML学习总结-DOM和SAX解析-综合案例-(四)
- Android SAX解析GoogleWeather学习
- Android--学习记录--sax解析
- Android学习-Sax解析XML
- sax解析xml文件过程总结
- Xerces C++ SAX 解析事件总结
- SAX PULL DOCUMENT解析XML总结
- SAX解析xml学习笔记[1]
- Java解析XML学习笔记(SAX篇)
- 天气预报之二(学习SAX解析)
- XML学习之SAX解析XML文件
- xml学习笔记(5)sax解析
- Android学习笔记--解析XML之SAX
- Servlet基本结构的源码解析
- XDOJ1210 - 射击游戏
- 几种服务器模型
- 一个panic bug的分析过程(一)
- 关于C++中虚函数表的几点总结
- SAX解析学习总结
- android SharedPreferences保存数据
- Search in Rotated Sorted Array
- 排序
- BZOJ 1642: [Usaco2007 Nov]Milking Time 挤奶时间
- 模拟水题。。。
- linux(ubuntu)下安装eclipse
- Twitter Storm源代码分析之acker工作流程
- 组合数