使用SAX解析XML文件


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

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

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

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

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

下面是SAX解析XML文件的代码程序,Android_sax完整代码下载地址:

免费下载地址在 http://linux.bkjia.com/

用户名与密码都是www.bkjia.com

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

 

MainActivity:

/**
 * MainActivity
 *
 * @author zuolongsnail
 *
 */
public class MainActivity extends Activity {
 private Button parseBtn;
 private ListView listView;
 private ArrayAdapter<Person> adapter;
 private ArrayList<Person> 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<Person>(MainActivity.this,
      android.R.layout.simple_expandable_list_item_1, persons);
    listView.setAdapter(adapter);
   }
  });
 }

 private ArrayList<Person> 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();
 }
}

  • 1
  • 2
  • 3
  • 4
  • 下一页

相关内容

    暂无相关文章