JAVA XML 解析之五-綜合小例子
2008年4月21日 Edited By DingDangXiaoMa
xml文件讀取,簡(jiǎn)單例子。讀取NO及ADDR
data_10k.xml
DOM4j:
這幾種方法的比較:http://java.chinaitlab.com/XMLBeans/717370.html
DOM,還是最基礎(chǔ)的操作。另外,DOM4j,在現(xiàn)在的java框架中也有應(yīng)用。
好了就到這里,就是簡(jiǎn)單的綜合了。有機(jī)會(huì)再寫寫例子吧。
xml文件讀取,簡(jiǎn)單例子。讀取NO及ADDR
data_10k.xml
<?xml version="1.0" encoding="UTF-8"?>
<RESULT>
<VALUE>
<NO>A1234</NO>
<ADDR>省XX縣XX鎮(zhèn)XX路X段XX號(hào)</ADDR>
</VALUE>
<VALUE>
<NO>B1234</NO>
<ADDR>省XX市XX鄉(xiāng)XX村XX組</ADDR>
</VALUE>
</RESULT>
DOM方式:<RESULT>
<VALUE>
<NO>A1234</NO>
<ADDR>省XX縣XX鎮(zhèn)XX路X段XX號(hào)</ADDR>
</VALUE>
<VALUE>
<NO>B1234</NO>
<ADDR>省XX市XX鄉(xiāng)XX村XX組</ADDR>
</VALUE>
</RESULT>
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 WDom {
public static void main(String arge[]){
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("車牌號(hào)碼:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());
System.out.println("車主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
}
}catch(Exception e){
e.printStackTrace();
}
}
}
JDOM:import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
public class WDom {
public static void main(String arge[]){
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("車牌號(hào)碼:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());
System.out.println("車主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
}
}catch(Exception e){
e.printStackTrace();
}
}
}
import java.io.File;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
public class WJDom {
public static void main(String arge[]) {
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("車牌號(hào)碼:" + ((Element)allChildren.get(i)).getChild("NO").getText());
System.out.println("車主地址:" + ((Element)allChildren.get(i)).getChild("ADDR").getText());
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
SAX:(這個(gè)更不知道是什么意思了?!)import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
public class WJDom {
public static void main(String arge[]) {
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("車牌號(hào)碼:" + ((Element)allChildren.get(i)).getChild("NO").getText());
System.out.println("車主地址:" + ((Element)allChildren.get(i)).getChild("ADDR").getText());
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
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 WSAX extends DefaultHandler {
java.util.Stack tags = new java.util.Stack();
public WSAX() {
super();
}
public static void main(String args[]) {
long lasting = System.currentTimeMillis();
try {
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
WSAX reader = new WSAX();
sp.parse(new InputSource("data_10k.xml"), reader);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("運(yùn)行時(shí)間:" + (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("車牌號(hào)碼:" + new String(ch, start, length).trim());
}
if (tag.equals("ADDR")) {
System.out.println("地址:" + new String(ch, start, length).trim());
}
}
public void startElement(String uri,String localName,String qName,Attributes attrs) {
tags.push(qName);
}
}
SAX的方式運(yùn)行,會(huì)有問(wèn)題,輸出的結(jié)果。ADDR,會(huì)有三行,這是為什么呢?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 WSAX extends DefaultHandler {
java.util.Stack tags = new java.util.Stack();
public WSAX() {
super();
}
public static void main(String args[]) {
long lasting = System.currentTimeMillis();
try {
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
WSAX reader = new WSAX();
sp.parse(new InputSource("data_10k.xml"), reader);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("運(yùn)行時(shí)間:" + (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("車牌號(hào)碼:" + new String(ch, start, length).trim());
}
if (tag.equals("ADDR")) {
System.out.println("地址:" + new String(ch, start, length).trim());
}
}
public void startElement(String uri,String localName,String qName,Attributes attrs) {
tags.push(qName);
}
}
DOM4j:
import java.io.File;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class WDOM4j {
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("車牌號(hào)碼:" + foo.elementText("NO"));
System.out.println("車主地址:" + foo.elementText("ADDR"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class WDOM4j {
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("車牌號(hào)碼:" + foo.elementText("NO"));
System.out.println("車主地址:" + foo.elementText("ADDR"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
這幾種方法的比較:http://java.chinaitlab.com/XMLBeans/717370.html
DOM,還是最基礎(chǔ)的操作。另外,DOM4j,在現(xiàn)在的java框架中也有應(yīng)用。
好了就到這里,就是簡(jiǎn)單的綜合了。有機(jī)會(huì)再寫寫例子吧。
posted on 2008-04-21 18:02 叮當(dāng)小馬 閱讀(228) 評(píng)論(0) 編輯 收藏 所屬分類: XML