java读取xml文件的四种方法

来源:互联网 发布:淘宝店推广软文范文 编辑:程序博客网 时间:2024/05/19 20:45

Xml代码

复制代码
 1 <?xml version="1.0" encoding="GB2312"?>   2 <RESULT>   3 <VALUE>      4   <NO>A1234</NO>      5   <ADDR>河南省郑州市</ADDR>   6 </VALUE>   7 <VALUE>      8   <NO>B1234</NO>      9   <ADDR>河南省郑州市二七区</ADDR>  10 </VALUE>  11 </RESULT>
复制代码

第一种 DOM 实现方法:

复制代码
 1 import java.io.File;    2    3 import javax.xml.parsers.DocumentBuilder;    4 import javax.xml.parsers.DocumentBuilderFactory;    5    6 import org.w3c.dom.Document;    7 import org.w3c.dom.NodeList;    8    9 public class MyXMLReader2DOM {   10 public static void main(String arge[]) {   11   12   long lasting = System.currentTimeMillis();   13   14   try {   15     File f = new File("data_10k.xml");   16     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();   17     DocumentBuilder builder = factory.newDocumentBuilder();   18     Document doc = builder.parse(f);   19     NodeList nl = doc.getElementsByTagName_r("VALUE");   20    for (int i = 0; i < nl.getLength(); i++) {   21      System.out.print("车牌号码:"+ doc.getElementsByTagName_r("NO").item(i).getFirstChild().getNodeValue());   22      System.out.println("车主地址:"+ doc.getElementsByTagName_r("ADDR").item(i).getFirstChild().getNodeValue());   23     }   24    } catch (Exception e) {   25     e.printStackTrace();   26    }   27 }   28 }  
复制代码

第二种,DOM4J实现方法

复制代码
 1 import java.io.*;    2 import java.util.*;    3 import org.dom4j.*;    4 import org.dom4j.io.*;    5    6 public class MyXMLReader2DOM4J {    7 public static void main(String arge[]) {    8   long lasting = System.currentTimeMillis();    9   try {   10     File f = new File("data_10k.xml");   11     SAXReader reader = new SAXReader();   12     Document doc = reader.read(f);   13     Element root = doc.getRootElement();   14     Element foo;   15    for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) {   16      foo = (Element) i.next();   17      System.out.print("车牌号码:" + foo.elementText("NO"));   18      System.out.println("车主地址:" + foo.elementText("ADDR"));   19     }   20    } catch (Exception e) {   21     e.printStackTrace();   22    }   23 }   24 }  
复制代码

第三种 JDOM实现方法:

复制代码
 1 import java.io.*;    2 import java.util.*;    3 import org.jdom.*;    4 import org.jdom.input.*;    5    6 public class MyXMLReader2JDOM {    7 public static void main(String arge[]) {    8   long lasting = System.currentTimeMillis();    9   try {   10     SAXBuilder builder = new SAXBuilder();   11     Document doc = builder.build(new File("data_10k.xml"));   12     Element foo = doc.getRootElement();   13     List allChildren = foo.getChildren();   14    for (int i = 0; i < allChildren.size(); i++) {   15      System.out.print("车牌号码:"+ ((Element) allChildren.get(i)).getChild("NO").getText());   16      System.out.println("车主地址:"+ ((Element) allChildren.get(i)).getChild("ADDR").getText());   17     }   18    } catch (Exception e) {   19     e.printStackTrace();   20    }   21 }   22 }
复制代码

第四种SAX实现方法:

复制代码
 1 import javax.xml.parsers.SAXParser;    2 import javax.xml.parsers.SAXParserFactory;    3    4 import org.xml.sax.Attributes;    5 import org.xml.sax.InputSource;    6 import org.xml.sax.SAXException;    7 import org.xml.sax.helpers.DefaultHandler;    8    9 public class MyXMLReader2SAX extends DefaultHandler {   10   11 java.util.Stack tags = new java.util.Stack();   12   13 public MyXMLReader2SAX() {   14   super();   15 }   16   17 public static void main(String args[]) {   18   long lasting = System.currentTimeMillis();   19   try {   20     SAXParserFactory sf = SAXParserFactory.newInstance();   21     SAXParser sp = sf.newSAXParser();   22     MyXMLReader2SAX reader = new MyXMLReader2SAX();   23     sp.parse(new InputSource("data_10k.xml"), reader);   24    } catch (Exception e) {   25     e.printStackTrace();   26    }   27   28    System.out.println("运行时间:" + (System.currentTimeMillis() - lasting)   29      + "毫秒");   30 }   31   32 public void characters(char ch[], int start, int length)   33    throws SAXException {   34    String tag = (String) tags.peek();   35   if (tag.equals("NO")) {   36     System.out.print("车牌号码:" + new String(ch, start, length));   37    }   38   if (tag.equals("ADDR")) {   39     System.out.println("地址:" + new String(ch, start, length));   40    }   41 }   42   43 public void startElement(String uri, String localName, String qName,   44     Attributes attrs) {   45    tags.push(qName);   46 }   47 } 
复制代码
原创粉丝点击