java读取XML文件的四种方式

时间:2021-08-05 12:36:31

java读取XML文件的四种方式

Xml代码 java读取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 实现方法 import java.io.File; import javax.xml.parsers.D

 xml文件  <?xml version="1.0" encoding="GB2312"?>
  <RESULT>
  <VALUE>
  <NO>A1234</NO>
  <ADDR>四川省XX县XX镇XX路X段XX号</ADDR>
  </VALUE>
  <VALUE>
  <NO>B1234</NO>
  <ADDR>四川省XX市XX乡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 MyXMLReader2DOM {
  public static void main(String arge[]) {
  long lasting = System.currentTimeMillis();
  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("车牌号码:"+ doc.getElementsByTagName("NO")。item(i)。getFirstChild()。getNodeValue());
  System.out.println("车主地址:"+ doc.getElementsByTagName("ADDR")。item(i)。getFirstChild()。getNodeValue());
  }
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
  }

  第二种,DOM4J实现方法
  import java.io.*;
  import java.util.*;
  import org.dom4j.*;
  import org.dom4j.io.*;
  public class MyXMLReader2DOM4J {
  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("车牌号码:" + foo.elementText("NO"));
  System.out.println("车主地址:" + foo.elementText("ADDR"));
  }
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
  }

  第三种 JDOM实现方法
  import java.io.*;
  import java.util.*;
  import org.jdom.*;
  import org.jdom.input.*;
  public class MyXMLReader2JDOM {
  public static void main(String arge[]) {
  long lasting = System.currentTimeMillis();
  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("车牌号码:"+ ((Element) allChildren.get(i))。getChild("NO")。getText());
  System.out.println("车主地址:"+ ((Element) allChildren.get(i))。getChild("ADDR")。getText());
  }
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
  }

  第四种SAX实现方法
  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 MyXMLReader2SAX extends DefaultHandler {
  java.util.Stack tags = new java.util.Stack();
  public MyXMLReader2SAX() {
  super();
  }
  public static void main(String args[]) {
  long lasting = System.currentTimeMillis();
  try {
  SAXParserFactory sf = SAXParserFactory.newInstance();
  SAXParser sp = sf.newSAXParser();
  MyXMLReader2SAX reader = new MyXMLReader2SAX();
  sp.parse(new InputSource("data_10k.xml"), reader);
  } catch (Exception e) {
  e.printStackTrace();
  }
  System.out.println("运行时间:" + (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("车牌号码:" + new String(ch, start, length));
  }
  if (tag.equals("ADDR")) {
  System.out.println("地址:" + new String(ch, start, length));
  }
  }
  public void startElement(String uri, String localName, String qName,
  Attributes attrs) {
  tags.push(qName);
  }
  }