數(shù)據(jù)加載中……
          JAVA XML 解析之五-綜合小例子
          2008年4月21日  Edited By DingDangXiaoMa
          xml文件讀取,簡(jiǎn)單例子。讀取NO及ADDR
          data_10k.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <RESULT>
              
          <VALUE>
                  
          <NO>A1234</NO>
                  
          <ADDR>省XX縣XX鎮(zhèn)XX路X段XX號(hào)</ADDR>
              
          </VALUE>
              
          <VALUE>
                  
          <NO>B1234</NO>
                  
          <ADDR>省XX市XX鄉(xiāng)XX村XX組</ADDR>
              
          </VALUE>
          </RESULT>
          DOM方式:
          import java.io.File;
          import javax.xml.parsers.DocumentBuilder;
          import javax.xml.parsers.DocumentBuilderFactory;
          import org.w3c.dom.Document;
          import org.w3c.dom.NodeList;
          public class WDom {
              
          public static void main(String arge[]){
              
          try{
              File f
          =new File("data_10k.xml");
              DocumentBuilderFactory factory
          =DocumentBuilderFactory.newInstance();
              DocumentBuilder builder
          =factory.newDocumentBuilder();
              Document doc 
          = builder.parse(f);
              NodeList nl 
          = doc.getElementsByTagName("VALUE");
              
          for (int i=0;i<nl.getLength();i++){
              System.out.print(
          "車牌號(hào)碼:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());
              System.out.println(
          "車主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
               }
              }
          catch(Exception e){
              e.printStackTrace();
              }
              }
          }
          JDOM:
          import java.io.File;
          import java.util.List;
          import org.jdom.Document;
          import org.jdom.Element;
          import org.jdom.input.SAXBuilder;
          public class WJDom {
              
          public static void main(String arge[]) {
              
          try {
              SAXBuilder builder 
          = new SAXBuilder();
              Document doc 
          = builder.build(new File("data_10k.xml"));
              Element foo 
          = doc.getRootElement();
              List allChildren 
          = foo.getChildren();
              
          for(int i=0;i<allChildren.size();i++) {
                  System.out.print(
          "車牌號(hào)碼:" + ((Element)allChildren.get(i)).getChild("NO").getText());
                  System.out.println(
          "車主地址:" + ((Element)allChildren.get(i)).getChild("ADDR").getText());
              }
              }
          catch(Exception e) {
              e.printStackTrace();
              }
              }
          }
          SAX:(這個(gè)更不知道是什么意思了?!
          import javax.xml.parsers.SAXParser;
          import javax.xml.parsers.SAXParserFactory;
          import org.xml.sax.Attributes;
          import org.xml.sax.InputSource;
          import org.xml.sax.SAXException;
          import org.xml.sax.helpers.DefaultHandler;
          public class WSAX extends DefaultHandler {
              java.util.Stack tags = new java.util.Stack();

              
          public WSAX() {
                  
          super();
              }
              
          public static void main(String args[]) {
                  
          long lasting = System.currentTimeMillis();
                  
          try {
                  SAXParserFactory sf 
          = SAXParserFactory.newInstance();
                  SAXParser sp 
          = sf.newSAXParser();
                  WSAX reader 
          = new WSAX();
                  sp.parse(
          new InputSource("data_10k.xml"), reader);
                  } 
          catch (Exception e) {
                  e.printStackTrace();
                  }
                  System.out.println(
          "運(yùn)行時(shí)間:" + (System.currentTimeMillis() - lasting) + "毫秒");
              }
              
          public void characters(char ch[], int start, int length) throws SAXException {
                  String tag 
          = (String) tags.peek();
                  
          if (tag.equals("NO")) {
                  System.out.print(
          "車牌號(hào)碼:" + new String(ch, start, length).trim());
                  }
                  
          if (tag.equals("ADDR")) {
                      System.out.println(
          "地址:" + new String(ch, start, length).trim());
                  }
              }
              
          public void startElement(String uri,String localName,String qName,Attributes attrs) {
                  tags.push(qName);
              }
              }
          SAX的方式運(yùn)行,會(huì)有問(wèn)題,輸出的結(jié)果。ADDR,會(huì)有三行,這是為什么呢?

          DOM4j:
          import java.io.File;
          import java.util.Iterator;
          import org.dom4j.Document;
          import org.dom4j.Element;
          import org.dom4j.io.SAXReader;
          public class WDOM4j {

              
          public static void main(String arge[]) {
              
          long lasting = System.currentTimeMillis();
              
          try {
              File f 
          = new File("data_10k.xml");
              SAXReader reader 
          = new SAXReader();
              Document doc 
          = reader.read(f);
              Element root 
          = doc.getRootElement();
              Element foo;
              
          for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) {
              foo 
          = (Element) i.next();
              System.out.print(
          "車牌號(hào)碼:" + foo.elementText("NO"));
              System.out.println(
          "車主地址:" + foo.elementText("ADDR"));
              }
              } 
          catch (Exception e) {
              e.printStackTrace();
              }
              }
          }

          這幾種方法的比較:http://java.chinaitlab.com/XMLBeans/717370.html
          DOM,還是最基礎(chǔ)的操作。另外,DOM4j,在現(xiàn)在的java框架中也有應(yīng)用。
          好了就到這里,就是簡(jiǎn)單的綜合了。有機(jī)會(huì)再寫寫例子吧。

          posted on 2008-04-21 18:02 叮當(dāng)小馬 閱讀(228) 評(píng)論(0)  編輯  收藏 所屬分類: XML

          主站蜘蛛池模板: 乌什县| 靖远县| 海林市| 古交市| 西乌珠穆沁旗| 井冈山市| 昌都县| 娄烦县| 富顺县| 凤台县| 老河口市| 正定县| 潍坊市| 仪征市| 连平县| 冕宁县| 沙田区| 开远市| 顺义区| 康乐县| 富顺县| 石狮市| 竹北市| 保靖县| 金寨县| 房山区| 泰和县| 临城县| 习水县| 兴城市| 泸定县| 和平区| 江都市| 吴忠市| 廉江市| 乌什县| 满洲里市| 高州市| 玉溪市| 东丽区| 安国市|