如何使用dom解析器解析xml文件

时间:2014-08-05 07:05:40

标签: android

有谁知道,可以帮我用dom解析器解析这个xml吗?我是新手,我不知道该怎么做。 问题是这个xml代码是复杂的,我在互联网上找到的教程太容易作为例子,所以我有一些关于这个问题的问题。 Thnaks

这是xml文件:

<Region title="test-1" >
        <Branches>
            <Branch
                cityName="city-1"
                description="address" >
                <Phone address="00000000" />
                <Phone address="00000001" />
                <Phone address="00000002" />
                <Phone address="00000003" />
            </Branch>
            <Branch
                cityName="city-2"
                description="address-2" >
                <Phone address="00000004" />
                <Phone address="00000005" />
                <Phone address="00000006" />
                <Phone address="00000007" />
            </Branch>
            <Branch
                cityName="city-3"
                description="address-3" >
                <Phone address="00000008" />
                <Phone address="00000009" />
                <Phone address="00000010" />
                <Phone address="00000011" />
            </Branch>
        </Branches>

        <ATMs>
            <ATM
                cityName="city-1"
                description="address-1" >
            </ATM>
            <ATM
                cityName="city-2"
                description="address-2" >
            </ATM>
            <ATM
                cityName="city-3"
                description="address-3" >
            </ATM>       
        </ATMs>
    </Region>

    <Region title="test-2" >
        <Branches>
            <Branch
                cityName="city-1"
                description="address" >
                <Phone address="00000000" />
                <Phone address="00000001" />
                <Phone address="00000002" />
                <Phone address="00000003" />
            </Branch>
            <Branch
                cityName="city-2"
                description="address-2" >
                <Phone address="00000004" />
                <Phone address="00000005" />
                <Phone address="00000006" />
            </Branch>
            <Branch
                cityName="city-3"
                description="address-3" >
                <Phone address="00000008" />
                <Phone address="00000009" />
            </Branch>
        </Branches>

        <ATMs>
            <ATM
                cityName="city-1"
                description="address-1" >
            </ATM>
            <ATM
                cityName="city-2"
                description="address-2" >
            </ATM>
            <ATM
                cityName="city-3"
                description="address-3" >
            </ATM>       
        </ATMs>
    </Region>

1 个答案:

答案 0 :(得分:0)

android DOM Xml解析的示例 activity_main.xml中

从托盘中拖出一个textview。现在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文件。 文件:file.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。 文件:MainActivity.java

package com.javatpoint.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();  
}  

}