DOM方式解析xml是先把xml文档都读到内存中,然后再用DOM API来访问树形结构,并获取数据的。DOM比较符合人的思维模式,但是其对内存的消耗比较大。
activity_main.xml
在assets目录下添加product.xml文件
因产自中国湖南安化县而得名。是中国古代名茶之一,上个世纪50年代曾一度绝产,以至于默默无名。2010年,湖南黑茶走进中国上海世博会,成为中国世博会十大名茶之一。安化黑茶再度走进茶人的视野,成为茶人的新宠。其特色的千两茶,堪称一绝。 http://baike.baidu.com/view/2255732.htm 起于汉、盛于明清的地方擂茶至今在湖南中部以北的安化一带传袭。其色味、功效、制作方法,以及饮茶习俗等,无不让途经于此的人感受到山乡古朴浓郁的擂茶文化。春暖花开的四月,记者跟随“环行洞庭湖”采访团走进了这个擂茶飘香的地方。 http://baike.baidu.com/view/66985.htm
创建Product类
/** * */package com.hyzhou.domxml2;import java.io.Serializable;/** * @author hyzhou * * 2013-8-29 */public class Product implements Serializable { /** * */ private static final long serialVersionUID = -6907670870626810002L; private int length; private String introducton; private String imageurl; private String name; public int getLength() { return length; } public void setLength(int length) { this.length = length; } public String getIntroducton() { return introducton; } public void setIntroducton(String introducton) { this.introducton = introducton; } public String getImageurl() { return imageurl; } public void setImageurl(String imageurl) { this.imageurl = imageurl; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
创建MainActivity类,用于解析XML并显示结果
package com.hyzhou.domxml2;import java.io.InputStream;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;import android.os.Bundle;import android.util.Log;import android.widget.TextView;import android.app.Activity;public class MainActivity extends Activity { private TextView textView ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView=(TextView)findViewById(R.id.textview01); StringBuffer sb=new StringBuffer(); ArrayListlist= (ArrayList ) getProductFromXml("product.xml"); Iterator it=list.iterator(); while(it.hasNext()) { Product myit=it.next(); sb.append(myit.getName()+" 长度:"+myit.getLength()+"\n"+myit.getImageurl() +"\n"+myit.getIntroducton()+"\n\n"); } Log.i("wa~~~~~",sb.toString()); textView.setText(sb.toString()); } public List getProductFromXml(String fileName) { List products=new ArrayList (); DocumentBuilderFactory factory=null; DocumentBuilder builder=null; Document document=null; InputStream inputStream=null; //创建实例DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); try { //创建DocumentBuilder builder=factory.newDocumentBuilder(); //获取输入流 inputStream=this.getResources().getAssets().open(fileName); Log.i("inputStream", inputStream.toString()); //加载XML文档 document=builder.parse(inputStream); //找到根元素 Element root=document.getDocumentElement(); NodeList nodes=root.getElementsByTagName("product"); //遍历所有子结点 Product myproduct=null; for(int i=0;i
参考文档: