亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 924 | 回復(fù): 0
打印 上一主題 下一主題

Android 解析XML文件(dom) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-12-21 08:41 |只看該作者 |倒序瀏覽
DOM解析XML文件時,會將XML文件的所有內(nèi)容讀取到內(nèi)存中,然后允許您使用DOM API遍歷XML樹、檢索所需的數(shù)據(jù)。使用DOM操作XML的代碼看起來比較直觀,并且,在某些方面比基于SAX的實現(xiàn)更加簡單。

但是,因為DOM需要將XML文件的所有內(nèi)容讀取到內(nèi)存中,所以內(nèi)存的消耗比較大,特別對于運行Android的移動設(shè)備來說,因為設(shè)備的資源比較寶貴,所以建議還是采用SAX來解析XML文件,當(dāng)然,如果XML文件的內(nèi)容比較小采用DOM是可行的。

下面是一個使用DOM解析xml的例子:

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.InputStream;
  5. import java.util.ArrayList;
  6. import java.util.List;

  7. import javax.xml.parsers.DocumentBuilder;
  8. import javax.xml.parsers.DocumentBuilderFactory;

  9. import org.w3c.dom.Document;
  10. import org.w3c.dom.Element;
  11. import org.w3c.dom.Node;
  12. import org.w3c.dom.NodeList;

  13. public class DOM_XML_Parser {

  14.     /**
  15.      * @param args
  16.      */
  17.     public static void main(String[] args) {
  18.         File file = new File("C:/studentInfo.xml");
  19.         try {
  20.             List<Person> personList = readXML(new FileInputStream(file));
  21.             if(personList != null) {
  22.                 for(Person p : personList) {
  23.                     System.out.println(p);
  24.                 }
  25.             } else {
  26.                 System.out.println("list null");
  27.             }
  28.         } catch (FileNotFoundException e) {
  29.             e.printStackTrace();
  30.         }
  31.     }
  32.     
  33.     public static List<Person> readXML(InputStream inStream) {
  34.         List<Person> persons = new ArrayList<Person>();
  35.         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  36.         try {
  37.             DocumentBuilder builder = factory.newDocumentBuilder();
  38.             Document dom = builder.parse(inStream);
  39.             Element root = dom.getDocumentElement();
  40.             NodeList personNodes = root.getElementsByTagName("person");//查找所有person節(jié)點
  41.             for (int i = 0; i < personNodes.getLength(); i++) {
  42.                 Person person = new Person();
  43.                 //得到第一個person節(jié)點
  44.                 Element personNode = (Element) personNodes.item(i);
  45.                 //獲取person節(jié)點的id屬性值
  46.                 person.id = (new Integer(personNode.getAttribute("id")));
  47.                 
  48.                 //獲取person節(jié)點下的所有子節(jié)點(標(biāo)簽之間的空白節(jié)點和name/age元素)
  49.                 NodeList childsNodes = personNode.getChildNodes();
  50.                 for (int j = 0; j < childsNodes.getLength(); j++) {
  51.                     Node node = (Node) childsNodes.item(j);            
  52.                     //判斷是否為元素類型
  53.                     if(node.getNodeType() == Node.ELEMENT_NODE){                    
  54.                         Element childNode = (Element) node;
  55.          //判斷是否name元素
  56.                      if ("name".equals(childNode.getNodeName())) {
  57.                          //獲取name元素下Text節(jié)點,然后從Text節(jié)點獲取數(shù)據(jù)                 
  58.                          person.name = (childNode.getFirstChild().getNodeValue());
  59.                      } else if ("age".equals(childNode.getNodeName())) {
  60.                          person.age = (new Short(childNode.getFirstChild().getNodeValue()));
  61.                      }
  62.                     }
  63.              }
  64.              persons.add(person);
  65.             }
  66.             inStream.close();
  67.         } catch (Exception e) {
  68.             e.printStackTrace();
  69.         }
  70.         return persons;
  71.     }
  72. }

輸出結(jié)果是:
id=23 name=LiMing age=30
id=20 name=XiaoZhang age=25


需要解析的XML文件如下:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <persons>
  3.     <person id="23">
  4.         <name>LiMing</name>
  5.         <age>30</age>
  6.     </person>
  7.     <person id="20">
  8.         <name>XiaoZhang</name>
  9.         <age>25</age>
  10.     </person>
  11. </persons>
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP