XML使用

xml的使用,一直都在使用公司花钱买的一个组件---twaver,里面对xml使用进行了封装,只要把信息以树形节点的形式放到box中去就行了,一直以来有种被它蒙着的感觉,不爽,现在抽出时间怎么也得有个对xml所以然的理解,看《java核心技术》中的xml部分,没有我想的那么容易理解,到感觉到了莫大的晦涩难懂,google搜了一下,我还认为下面这几个例子比较好一点,现在记录下来,希望原著作者不要追究我的版权问题,小弟我是向你学习:

四种xml操作方式的基本使用方法 

xml
文件:


?xml version="1.0" encoding="GB2312"? 
RESULT
 
VALUE
 
   NOA1234/NO
 
   ADDR>四川省XXXXXXXXX号</ADDR
 
/VALUE
 
VALUE
 
   NOB1234/NO
 
   <ADDR>四川省XXXXXXXX组</ADDR
 
/VALUE
 
/RESULT
 

1
DOM 

import java.io.*; 
import java.util.*; 
import org.w3c.dom.*; 
import javax.xml.parsers.*; 

public class MyXMLReader{ 
 
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()); 
   

  
}catch(Exception e){ 
   
e.printStackTrace(); 


2
SAX 

import org.xml.sax.*; 
import org.xml.sax.helpers.*; 
import javax.xml.parsers.*; 

public class MyXMLReader extends DefaultHandler { 

 
java.util.Stack tags = new java.util.Stack(); 
 
public MyXMLReader() { 
  
super(); 


 
public static void main(String args[]) { 
  
long lasting = System.currentTimeMillis(); 
  
try { 
   
SAXParserFactory sf = SAXParserFactory.newInstance(); 
   
SAXParser sp = sf.newSAXParser(); 
   
MyXMLReader reader = new MyXMLReader(); 
   
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);} 


3
 JDOM 

import java.io.*; 
import java.util.*; 
import org.jdom.*; 
import org.jdom.input.*; 

public class MyXMLReader { 

 
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()); 
   

  
} catch (Exception e) { 
   
e.printStackTrace(); 




4
DOM4J 

import java.io.*; 
import java.util.*; 
import org.dom4j.*; 
import org.dom4j.io.*; 

public class MyXMLReader { 

 
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(); 

)

总结: 看了上面几个例子,其实xml是很简单的东西嘛,上面的四个例子DOM4J还是能看出来是最好用的,SAX的使用貌似很复杂的,还得慢慢体会啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值