使用sax解析器进行android xml解析

Android提供了使用SAX,DOM等解析器解析xml文件的功能。 SAX解析器不能用于创建XML文件,而只能用于解析xml文件。
SAX Parser相对于DOM的优势
它比DOM消耗更少的内存。
android SAX Xml解析示例
activity_main.xml从面板上拖动一个textview。现在,activity_main.xml文件将如下所示:

< RelativeLayout xmlns:androclass="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" >< TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="75dp" android:layout_marginTop="46dp" android:text="TextView" />< /RelativeLayout>

xml文件在项目的资产目录内创建一个名为file.xml的xml文件。
< ?xml version="1.0"?> < records> < employee> < name>Sachin Kumar< /name> < salary>50000< /salary> < /employee> < employee> < name>Rahul Kumar< /name> < salary>60000< /salary> < /employee> < employee> < name>John Mike< /name> < salary>70000< /salary> < /employee> < /records>

活动类【使用sax解析器进行android xml解析】现在,编写代码以使用sax解析器解析xml。
package com.srcmini.saxxmlparsing; import java.io.InputStream; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends Activity { TextView tv; @Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv=(TextView)findViewById(R.id.textView1); try { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); DefaultHandler handler = new DefaultHandler() {boolean name = false; boolean salary = false; public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (qName.equalsIgnoreCase("name")) { name = true; } if (qName.equalsIgnoreCase("salary")) { salary = true; } }//end of startElement method public void endElement(String uri, String localName, String qName) throws SAXException { }public void characters(char ch[], int start, int length) throws SAXException { if (name) {tv.setText(tv.getText()+"\n\n Name : " + new String(ch, start, length)); name = false; } if (salary) { tv.setText(tv.getText()+"\n Salary : " + new String(ch, start, length)); salary = false; } }//end of characters method }; //end of DefaultHandler objectInputStream is = getAssets().open("file.xml"); saxParser.parse(is, handler); } catch (Exception e) {e.printStackTrace(); } } }

输出:
使用sax解析器进行android xml解析

文章图片

    推荐阅读