zoukankan      html  css  js  c++  java
  • java读取 xml文件

    java读取xml文件的四种方法

    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 } 
    复制代码
  • 相关阅读:
    洛谷P1628 合并序列
    洛谷 P1334 瑞瑞的木板==P2664 【题目待添加】
    洛谷P1090 合并果子
    洛谷P3378 【模板】堆
    codevs 3129 奶牛代理商IX
    codevs 3344 迷宫
    codevs 2549 自然数和分解
    codevs 3096 流输入练习——寻找Sb.VI
    洛谷 P1821 [USACO07FEB]银牛派对Silver Cow Party
    洛谷 P1629 邮递员送信
  • 原文地址:https://www.cnblogs.com/cxiang/p/10875100.html
Copyright © 2011-2022 走看看