1.dom解析
/*dom解析*/package com.anthony.xml;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class DOM02 {
public static void main(String args[]) throws Exception {
// 取得DocumentBuilderFactory类的对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance() ;
// 取得DocumentBuilder类的对象
DocumentBuilder build = factory.newDocumentBuilder() ;
Document doc = build.parse(new File("E:" + File.separator +"Test"+ File.separator+"XMLAnalysis001.xml")) ;
// 得到所有的linkman节点
NodeList nl = doc.getElementsByTagName("linkman") ;
for(int x=0;x<nl.getLength();x++){
Element e = (Element) nl.item(x) ; // 取出每一个元素
System.out.println("姓名:" + e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()) ;
System.out.println("邮箱:" + e.getElementsByTagName("email").item(0).getFirstChild().getNodeValue()) ;
}
}
}
2.sax解析
package com.anthony.xml;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class MySAX extends DefaultHandler {
public void startDocument()throws SAXException{
System.out.println("<?xml version=\"1.0\" encoding=\"GBK\">") ;
}
public void startElement(String uri,
String localName,
String qName,
Attributes attributes)
throws SAXException{
System.out.print("<") ;
System.out.print(qName) ;
if(attributes != null){ // 如果存在了属性
for(int x=0;x<attributes.getLength();x++){
System.out.print(" " + attributes.getQName(x) + "=\"" + attributes.getValue(x) + "\"") ;
}
}
System.out.print(">") ;
}
public void endElement(String uri,
String localName,
String qName)
throws SAXException{
System.out.print("<") ;
System.out.print(qName) ;
System.out.print(">") ;
}
public void characters(char[] ch,
int start,
int length)
throws SAXException{
System.out.print(new String(ch,start,length)) ;
}
public void endDocument()
throws SAXException{
System.out.println("文档结束。。。") ;
}
}
package com.anthony.xml;
import java.io.File;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class SAX01 {
public static void main(String args[]) throws Exception {
// 建立SAX解析工厂
SAXParserFactory factory = SAXParserFactory.newInstance() ;
SAXParser parser = factory.newSAXParser() ;
parser.parse("E:"+File.separator+"Test"+File.separator+"sax_demo.xml",new MySAX()) ;
}
}
3.JDOM
package com.anthony.xml;
import java.io.File;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
public class JDOM01 {
public static void main(String args[]) throws Exception {
SAXBuilder builder = new SAXBuilder() ;
Document read_doc = builder.build(new File("D:" + File.separator + "address.xml")) ;
Element root = read_doc.getRootElement() ; // 取得根
List list = root.getChildren("linkman") ; // 得到所有的linkman
for(int x=0;x<list.size();x++){
Element e = (Element) list.get(x) ;
String name = e.getChildText("name") ; // 得到name子节点的内容
String id = e.getChild("name").getAttribute("id").getValue() ;
String email = e.getChildText("email") ;
System.out.println("-------------- 联系人 -------------") ;
System.out.println("姓名:" + name + ",编号:" + id) ;
System.out.println("EMAIL:" + email) ;
System.out.println("-----------------------------------") ;
System.out.println() ;
}
}
}
4.DOM4J
package com.anthony.xml;
import java.io.File;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
public class JDOM01 {
public static void main(String args[]) throws Exception {
SAXBuilder builder = new SAXBuilder() ;
Document read_doc = builder.build(new File("D:" + File.separator + "address.xml")) ;
Element root = read_doc.getRootElement() ; // 取得根
List list = root.getChildren("linkman") ; // 得到所有的linkman
for(int x=0;x<list.size();x++){
Element e = (Element) list.get(x) ;
String name = e.getChildText("name") ; // 得到name子节点的内容
String id = e.getChild("name").getAttribute("id").getValue() ;
String email = e.getChildText("email") ;
System.out.println("-------------- 联系人 -------------") ;
System.out.println("姓名:" + name + ",编号:" + id) ;
System.out.println("EMAIL:" + email) ;
System.out.println("-----------------------------------") ;
System.out.println() ;
}
}
}
个人觉得DOM4J的解析最方便,最出色!
扩展阅读:http://java.chinaitlab.com/XMLBeans/789848.html
参考文献:《javaweb开发实战经典》