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();
}
}
}
输出:
文章图片
推荐阅读
- 使用dom解析器进行android xml解析
- android sqlite和spinner的用法示例
- android sqlite用法教程
- android外部存储示例
- Android Studio插件美化Android Studio,文艺清新范
- android studio的lib和jniLibs
- android的消息提示(震动与提示音)
- Android版本4.0~7.0
- ArcGIS for android访问天地图