设为首页 加入收藏

TOP

使用SAX解析XML文件
2014-11-24 08:12:42 来源: 作者: 【 】 浏览:0
Tags:使用 SAX 解析 XML 文件

SAX(Simple API for XML),是指一种接口,或者一个软件包。


DOM:文档驱动。DOM在解析文件之前把整个文档装入内存,处理大型文件时其性能很差,是由于DOM的树结构所造成的,此结构占用的内存较多。


SAX:事件驱动型的XML解析方式。顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问,且是只读的。


由于移动设备的内存资源有限,SAX的顺序读取方式更适合移动开发。


SAX解析XML步骤
①创建XML解析处理器。
②创建SAX解析器。
③将XML解析处理器分配给解析器。
④对文档进行解析,将每个事件发送给处理器。


具体下载目录在 /2013年资料/2月/17日/使用SAX解析XML文件



MainActivity:


/**
* MainActivity
*
* @author zuolongsnail
*
*/
public class MainActivity extends Activity {
private Button parseBtn;
private ListView listView;
private ArrayAdapter adapter;
private ArrayList persons;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
parseBtn = (Button) findViewById(R.id.parse);
listView = (ListView) findViewById(R.id.list);
parseBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
persons = MainActivity.this.readXml();
adapter = new ArrayAdapter(MainActivity.this,
android.R.layout.simple_expandable_list_item_1, persons);
listView.setAdapter(adapter);
}
});
}


private ArrayList readXml() {
InputStream file = this.getClass().getClassLoader()
.getResourceAsStream("persons.xml");
// ①创建XML解析处理器
SAXXmlContentHandler contentHandler = new SAXXmlContentHandler();
try {
// 创建一个SAXParserFactory
SAXParserFactory factory = SAXParserFactory.newInstance();
// ②创建SAX解析器
SAXParser parser = factory.newSAXParser();
// ③将XML解析处理器分配给解析器
// ④对文档进行解析,将每个事件发送给处理器。
parser.parse(file, contentHandler);
file.close();


} catch (Exception e) {
e.printStackTrace();
}
return contentHandler.getBooks();
}
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android中组装xml文件内容 下一篇Java中的Timer和TimerTask在Andro..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·“我用Java 8”已成 (2025-12-26 11:19:54)
·下载 IntelliJ IDEA (2025-12-26 11:19:52)
·Java是什么?(通俗 (2025-12-26 11:19:49)
·雾里看花:真正意义 (2025-12-26 10:54:36)
·C++——模板(超详细 (2025-12-26 10:54:34)