Android DOM 解析 XML

res/raw/person.xml
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="001">
<name>張三</name>
<age>22</age>
</person>
<person id="002">
<name>李四</name>
<age>23</age>
</person>
<person id="003">
<name>王五</name>
<age>24</age>
</person>
</persons>DomParse.java
public class DomParse {
public static List<Person> parse(InputStream inputStream){
List<Person> persons=new ArrayList<Person>();
try {
//創建解析器
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document dom = builder.parse(inputStream);
//得到根節點,
Element root = dom.getDocumentElement();
//查找所有persons節點,
NodeList pNodes = root.getElementsByTagName("person");
//**********************遍歷所有person節點**********************
for (int i = 0; i < pNodes.getLength(); i++) {
Person person = new Person();
//得到第一個person節點
Element pNode = (Element) pNodes.item(i);
//獲取person節點的id屬性值
person.setId(new Integer(pNode.getAttribute("id")));
//獲取person節點下的所有子節點
NodeList cNodes = pNode.getChildNodes();
//**********************遍歷person節點下的所有子節點**********************
for (int j = 0; j < cNodes.getLength(); j++) {
Node node = (Node) cNodes.item(j);
//判斷是否為元素類型
if(node.getNodeType() == Node.ELEMENT_NODE){
Element cNode = (Element) node;
//判斷是否為name和age元素
if ("name".equals(cNode.getNodeName())) {
person.setName(cNode.getFirstChild().getNodeValue());
}else if ("age".equals(cNode.getNodeName())) {
person.setAge(new Short(cNode.getFirstChild().getNodeValue()));
}
}
}
persons.add(person);
}
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
return persons;
}
}在主類中調用:
public class TestActivity extends Activity {
Button btn;
ListView listView;
List<String> list=new ArrayList<String>();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn=(Button) findViewById(R.id.button);
listView=(ListView) findViewById(R.id.listView);
btn.setOnClickListener(new OnClickListener(){
public void onClick(View arg0) {
InputStream inputStream=getResources().openRawResource(R.raw.person);
List<Person>persons = DomParse.parse(inputStream);
for (Iterator iterator = persons.iterator(); iterator.hasNext();) {
Person person = (Person) iterator.next();
list.add(String.valueOf("ID:"+person.getId()) + " 姓名: "
+ person.getName() + " 年齡: " + person.getAge());
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getApplicationContext(),
android.R.layout.simple_list_item_1,
list);
listView.setAdapter(adapter);
}
});
}
} 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!