Android XML解析使用SAX解析器

Android XML解析使用SAX解析器

Android提供了使用SAX、DOM等解析器解析xml文件的功能。SAX解析器不能用于创建XML文件,只能用于解析xml文件。

SAX解析器相对于DOM的优势

它占用的内存较少。

Android SAX Xml解析示例

activity_main.xml

从工具箱中拖动一个文本视图。现在,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文档

在您的项目的assets目录中创建名为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>

Activity类

现在编写代码使用sax解析器解析xml。

package com.javatpoint.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;
@Override

public 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 object

InputStream is = getAssets().open("file.xml");
saxParser.parse(is, handler);

} catch (Exception e) {e.printStackTrace();}
}
}

下载此示例

输出:

Android XML解析使用SAX解析器

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程