dom4j 로 XML 분석 하기

프로필       dom4j 는 자바 의 XML API 로 jdom 과 유사 하여 XML 파일 을 읽 고 쓰 는 데 사용 된다.dom4j 는 아주 훌륭 한 자바 입 니 다. XML API 는 성능 이 우수 하고 기능 이 강 하 며 사용 하기 쉬 운 특징 을 가지 고 있 으 며 소스 코드 를 개방 한 소프트웨어 로 SourceForge 에서 찾 을 수 있 습 니 다.Dom4j 개발 을 사용 하려 면 dom4j 에 해당 하 는 jar 파일 을 다운로드 해 야 합 니 다.       1. 홈 페이지 다운로드:http://www.dom4j.org/dom4j-1.6.1/        2. dom4j 는 sourceforge. net 의 오픈 소스 프로젝트 이기 때문에 도착 할 수 있 습 니 다.http://sourceforge.net/projects/dom4j최신 버 전 을 다운로드 합 니 다. 2. 인 스 턴 스 (xml 분석)      1. dom4j. xml 파일 내용 은 다음 과 같 습 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<books> 
	<xiyouji id="x001"> 
		<author>   </author>  
		<times>  </times> 
	</xiyouji>  
	<hongloumeng id="x002"> 
		<author>   </author>  
	</hongloumeng> 
</books>
     2. 테스트 클래스
package com.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class TestDOM4JForXML {
	public static void main(String[] args) throws Exception {
		TestDOM4JForXML.readXML("dom4j.xml");
		TestDOM4JForXML.updateXML("dom4j.xml");
	}

	/**
	 *   document  
	 */
	public static Document getDocument(String fileName) {
		SAXReader saxReader = new SAXReader();
		Document document = null;
		try {
			document = saxReader.read(new File(fileName));//   read        ,   Document  
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return document;
	}

	/**
	 *   xml     
	 */
	public static void readXML(String fileName) throws Exception {
		Document document = getDocument(fileName);
		Element node = document.getRootElement(); 			//          
		listNodes(node);
	}
	
	public static void listNodes(Element node) {
		System.out.println("    :" + node.getName());	//         
		List<Attribute> list = node.attributes(); 			//              
		for (Attribute attr : list) { 						//       
			System.out.println(attr.getText() + "-----" + attr.getName() + "---" + attr.getValue());
		}
		if (!(node.getTextTrim().equals(""))) {
			System.out.println("    :" + node.getText());
		}
		Iterator<Element> it = node.elementIterator();		//             
		while (it.hasNext()) {
			Element e = it.next();							//          
			listNodes(e);									//         
		}
	}
	
	/**
	 *   xml     
	 */
	public static void updateXML(String fileName) throws Exception {
		Document document = getDocument(fileName);
		Element node = document.getRootElement(); 			//          
        Element element = node.element("hongloumeng");  	//   books     ,      hongloumeng    。  
        Attribute attr = element.attribute("id");  			//   element id        
        element.remove(attr);  								//     
        element.addAttribute("name", "  ");  				//         
        
        Element newElement = element.addElement("  ");  	//  hongloumeng                
        newElement.setText("  ");  						//   element            
        Element author = element.element("  ");  
        boolean flag = element.remove(author);   			//         (  true      ,      )
        Element descElement = element.addElement("  ");
        descElement.addCDATA("   ,       。");  		//  CDATA    
        writer(document);  
	}

	/** 
     *  document         
     */  
    public static void writer(Document document) throws Exception {  
        // OutputFormat format = OutputFormat.createCompactFormat();  	//        
        OutputFormat format = OutputFormat.createPrettyPrint();  		//          
        format.setEncoding("UTF-8");  							 		//       
        //   XMLWriter  ,              
        // XMLWriter writer = new XMLWriter(new FileWriter(new File("dom4j.xml")),format);  
        XMLWriter writer = new XMLWriter(new OutputStreamWriter( new FileOutputStream(new File("dom4j.xml")), "UTF-8"), format);  
        writer.write(document);   		//     
        writer.flush();  				//       
        writer.close();  				//       
    }  
	
}

3. 인 스 턴 스 (문자열 과 XML 의 상호 변환)
package com.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.OutputStreamWriter;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class TestParseXML {
	public static void main(String[] args) throws Exception {
		TestParseXML.parseXML();
		TestParseXML.updateXML();
		TestParseXML.readXML();
	}
	
	/**
	 *   document  
	 */
	public static Document getDocument(String fileName) {
		SAXReader saxReader = new SAXReader();
		Document document = null;
		try {
			document = saxReader.read(new File(fileName));//   read        ,   Document  
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return document;
	}
	

    /** 
     *           Document   
     */  
    public static void parseXML() throws Exception {  
        String text = "<csdn><java>Java </java><net>Net </net></csdn>";  
        Document document = DocumentHelper.parseText(text);  
        writer(document);  
    }  
	
	/** 
     *     document    document             xml   
     */  
    public static void updateXML() throws Exception {  
        Document document = DocumentHelper.createDocument();	//        
        Element root = document.addElement("csdn");  
        Element java = root.addElement("java");  
        java.setText("java ");  
        Element ios = root.addElement("ios");  
        ios.setText("ios ");  
        writer(document);  
    }  
	
	public static void readXML() {
		Document document = getDocument("csdn.xml");  
        Element root = document.getRootElement();  
        String docXmlText = document.asXML();   	//         
        System.out.println(docXmlText);  
        System.out.println("---------------------------");  
        
        String rootXmlText = root.asXML();  		// books            
        System.out.println(rootXmlText);  
        System.out.println("--------------------------");  
        
        Element e = root.element("java");  	//   hongloumeng          
        System.out.println(e.asXML());  
	}
    
  
    /** 
     *  document         
     */  
    public static void writer(Document document) throws Exception {  
        // OutputFormat format = OutputFormat.createCompactFormat();  	//        
        OutputFormat format = OutputFormat.createPrettyPrint();  		//          
        format.setEncoding("UTF-8");  							 		//       
        //   XMLWriter  ,              
        // XMLWriter writer = new XMLWriter(new FileWriter(new File("csdn.xml")),format);  
        XMLWriter writer = new XMLWriter(new OutputStreamWriter( new FileOutputStream(new File("csdn.xml")), "UTF-8"), format);  
        writer.write(document);   		//     
        writer.flush();  				//       
        writer.close();  				//       
    }  
}

좋은 웹페이지 즐겨찾기