JAVA进行XML解析

来源:互联网 发布:人工智能最好的大学 编辑:程序博客网 时间:2024/06/06 03:08

XML文本的内容

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

下面是XML的四种解析方式。

package learningxml;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 ReadXML {    public static void main(String[] args) {        long lasting = System.currentTimeMillis();        try {            File f = new File("d:\\xuexi\\learningxml.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();        }    }}

第二种方法

package learningxml;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("d:\\xuexi\\learningxml.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();        }    }}

第三种方法

package learningxml;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("d:\\xuexi\\learningxml.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();      }   }   }

第四种方法:

package learningxml;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("d:\\xuexi\\learningxml.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);   }   }
1 0
原创粉丝点击