我们也可以通过dom解析器解析xml文档。它可用于创建和解析xml文件。
DOM解析器相对于SAX的优势
【使用dom解析器进行android xml解析】它可以用于创建和解析xml文件,但是SAX解析器只能用于解析xml文件。
DOM解析器相对于SAX的劣势
它比SAX消耗更多的内存。
android DOM 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>
活动类让我们编写代码以使用dom解析器解析xml。
package com.srcmini.domxmlparsing;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tv1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1=(TextView)findViewById(R.id.textView1);
try {
InputStream is = getAssets().open("file.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(is);
Element element=doc.getDocumentElement();
element.normalize();
NodeList nList = doc.getElementsByTagName("employee");
for (int i=0;
i<
nList.getLength();
i++) {Node node = nList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element2 = (Element) node;
tv1.setText(tv1.getText()+"\nName : " + getValue("name", element2)+"\n");
tv1.setText(tv1.getText()+"Salary : " + getValue("salary", element2)+"\n");
tv1.setText(tv1.getText()+"-----------------------");
}
}//end of for loop} catch (Exception e) {e.printStackTrace();
}}
private static String getValue(String tag, Element element) {
NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes();
Node node = (Node) nodeList.item(0);
return node.getNodeValue();
}}
输出:
文章图片
推荐阅读
- android XMLPullParser使用教程
- 使用sax解析器进行android xml解析
- android sqlite和spinner的用法示例
- android sqlite用法教程
- android外部存储示例
- Android Studio插件美化Android Studio,文艺清新范
- android studio的lib和jniLibs
- android的消息提示(震动与提示音)
- Android版本4.0~7.0