• Java读取xml文件的四种方法


    xml文件:

      Xml代码


      <?xml version="1.0" encoding="GB2312"?>  
      <RESULT> 
      <VALUE> 
      <NO>A1234</NO> 
      <ADDR>河南省郑州市</ADDR> 
      </VALUE> 
      <VALUE> 
      <NO>B1234</NO> 
      <ADDR>河南省郑州市二七区</ADDR> 
      </VALUE> 
      </RESULT>

      第一种 DOM 实现方法:

      Java代码


        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()); 
      System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) 
      + "毫秒"); 
      } 
      } 
      } catch (Exception e) { 
      e.printStackTrace(); 
      } 
      } 
      }

      第二种,DOM4J实现方法:

      Java代码


        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")); 
      } 
      System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) 
      + "毫秒"); 
      } 
      } catch (Exception e) { 
      e.printStackTrace(); 
      } 
      } 
      }

      第三种 JDOM实现方法:

      Java代码


        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()); 
      } 
      System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) 
      + "毫秒"); 
      } 
      } catch (Exception e) { 
      e.printStackTrace(); 
      } 
      } 
      }

      第四种SAX实现方法:

      Java代码

     


     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); 
      } 
      }
  • 相关阅读:
    LeetCode-Palindrome Partitioning II
    LeetCode-Palindrome Partitioning
    LeetCode-Permutation Sequence
    LeetCode-Anagrams
    LeetCode-Text Justification
    LeetCode-Best Time to Buy and Sell Stock III
    LeetCode-Best Time to Buy and Sell Stock II
    LeetCode-Best Time to Buy and Sell Stock
    LeetCode-N-Queens II
    BZOJ 5390: [Lydsy1806月赛]糖果商店
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/5917904.html
Copyright © 2020-2023  润新知