<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

统计

  • 随笔 - 4
  • 文章 - 30
  • 评论 - 11
  • 引用 - 0

常用链接

留言簿(1)

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

JAVA XML 解析之五-综合小例子
2008年4月21日  Edited By DingDangXiaoMa
xml文件读取,简单例子。读取NO及ADDR
data_10k.xml
<?xml version="1.0" encoding="UTF-8"?>
<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 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(
"车牌号码:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());
    System.out.println(
"车主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
     }
    }
catch(Exception e){
    e.printStackTrace();
    }
    }
}
JDOM:
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(
"车牌号码:" + ((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 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(
"运行时间:" + (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).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的方式运行,会有问题,输出的结果。ADDR,会有三行,这是为什么呢?

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(
"车牌号码:" + foo.elementText("NO"));
    System.out.println(
"车主地址:" + foo.elementText("ADDR"));
    }
    } 
catch (Exception e) {
    e.printStackTrace();
    }
    }
}

这几种方法的比较:http://java.chinaitlab.com/XMLBeans/717370.html
DOM,还是最基础的操作。另外,DOM4j,在现在的java框架中也有应用。
好了就到这里,就是简单的综合了。有机会再写写例子吧。

posted on 2008-04-21 18:02 叮当小马 阅读(220) 评论(0)  编辑  收藏 所属分类: XML


只有注册用户登录后才能发表评论。


网站导航: