android 解析XML文件方法之一---DOM

DOM的方式主要是通过遍历节点。一步步查找。

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <persons>  
  3.     <person id="1">  
  4.         <name>张三</name>  
  5.         <age>20</age>  
  6.     </person>  
  7.     <person id="2">  
  8.         <name>李四</name>  
  9.         <age>21</age>  
  10.     </person>  
  11. </persons>  
Java代码 
  1. import java.io.InputStream;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4.   
  5. import javax.xml.parsers.DocumentBuilder;  
  6. import javax.xml.parsers.DocumentBuilderFactory;  
  7.   
  8. import org.w3c.dom.Document;  
  9. import org.w3c.dom.Element;  
  10. import org.w3c.dom.Node;  
  11. import org.w3c.dom.NodeList;  
  12.   
  13.   
  14. /** 
  15.  * 使用Dom解析xml文件 
  16.  * 
  17.  */  
  18. public class DomXMLReader {  
  19.   
  20. public static List<Person> readXML(InputStream inStream) {  
  21.     List<Person> persons = new ArrayList<Person>();  
  22.     DocumentBuilderFactory factory =  DocumentBuilderFactory.newInstance();  
  23.     try {  
  24.         DocumentBuilder builder = factory.newDocumentBuilder();  
  25.         Document dom = builder.parse(inStream);  
  26.         Element root = dom.getDocumentElement();  
  27.         NodeList items = root.getElementsByTagName("person");  
  28.         //查找所有person节点  
  29.       for (int i = 0; i < items.getLength(); i++) {            
  30.           Element personNode = (Element) items.item(i);  
  31.                 //获取person节点的id属性值  
  32.           person.setId(new Integer(personNode.getAttribute("id")));  
  33.                 //获取person节点下的所有子节点(标签之间的空白节点和name/age元素)  
  34.                 NodeList childsNodes = personNode.getChildNodes();  
  35.                 for (int j = 0; j < childsNodes.getLength(); j++) {  
  36.                   Node node = (Node) childsNodes.item(j);               
  37.                   //判断是否为元素类型  
  38.             if(node.getNodeType() == Node.ELEMENT_NODE){                         
  39.                     Element childNode = (Element) node;  
  40.                     //判断是否name元素  
  41.               if ("name".equals(childNode.getNodeName())) {  
  42.                  //得到name的值
  43.                  String age= cnode.getFirstChild().getNodeValue().toString();
  44.                                           } else if (“age”.equals(childNode.getNodeName())) {  
  45.                         String age=childNode.getFirstChild().getNodeValue());  
  46.                       }  
  47.                    }  
  48.                 }  
  49.             persons.add(person);  
  50.         }  
  51.         inStream.close();  
  52.     } catch (Exception e) {  
  53.         e.printStackTrace();  
  54.     }  
  55.     return persons;  
  56. }  
posted @ 2012-12-27 16:25  ProvenceT  阅读(189)  评论(0编辑  收藏  举报