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

我们也可以通过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(); }}

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

文章图片

    推荐阅读