【轉載】dom4j讀寫xml文檔

原文

http://kukuqiu.javaeye.com/blog/163476

 

據悉dom4j在xml解析方面是性能最好的,hibernate等框架都使用它作爲解析的工具
寫了簡單的dom4j的使用的demo,以備回憶,有些是dom4j的文擋裏例子改編的
使用dom4j解析下面的xml文件

Xml代碼 複製代碼
  1. <? xml   version = "1.0"   encoding = "GB2312" ?>     
  2.   
  3. <? xml-stylesheet   type = "text/xsl"   href = "students.xsl" ?>   
  4.   
  5. < students >   
  6.      < student   sn = "01" >   
  7.          < name > 張三 </ name >   
  8.          < age > 18 </ age >   
  9.      </ student >   
  10.        
  11.      < student   sn = "02" >   
  12.          < name > 李四 </ name >   
  13.          < age > 20 </ age >   
  14.      </ student >   
  15. </ students >   


Parse.java

Java代碼 複製代碼
  1. import  java.io.File;   
  2.   
  3. import  org.dom4j.Attribute;   
  4. import  org.dom4j.Document;   
  5. import  org.dom4j.DocumentException;   
  6. import  org.dom4j.Element;   
  7. import  org.dom4j.ProcessingInstruction;   
  8. import  org.dom4j.VisitorSupport;   
  9. import  org.dom4j.io.SAXReader;   
  10.   
  11. public   class  Parse {   
  12.   
  13.      public   static   void  main(String[] args) {   
  14.         SAXReader reader =  new  SAXReader();   
  15.         File file =  new  File( "src/students.xml" );   
  16.          try  {   
  17.             Document doc = reader.read(file);   
  18.             doc.accept( new  MyVistor());   
  19.         }  catch  (DocumentException e) {   
  20.              // TODO Auto-generated catch block   
  21.             e.printStackTrace();   
  22.         }   
  23.     }   
  24.   
  25.      public   static   class  MyVistor  extends  VisitorSupport {   
  26.          public   void  visit(Attribute node) {   
  27.             System.out.println( "Attibute:---"  + node.getName() +  "="   
  28.                     + node.getValue());   
  29.         }   
  30.   
  31.          public   void  visit(Element node) {   
  32.              if  (node.isTextOnly()) {   
  33.                 System.out.println( "Element:---"  + node.getName() +  "="   
  34.                         + node.getText());   
  35.             } else {   
  36.                 System.out.println( "--------"  + node.getName() +  "-------" );   
  37.             }   
  38.         }   
  39.   
  40.          @Override   
  41.          public   void  visit(ProcessingInstruction node) {   
  42.              // TODO Auto-generated method stub   
  43.             System.out.println( "PI:" +node.getTarget()+ " " +node.getText());   
  44.         }   
  45.     }   
  46. }  
import java.io.File;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.ProcessingInstruction;
import org.dom4j.VisitorSupport;
import org.dom4j.io.SAXReader;

public class Parse {

	public static void main(String[] args) {
		SAXReader reader = new SAXReader();
		File file = new File("src/students.xml");
		try {
			Document doc = reader.read(file);
			doc.accept(new MyVistor());
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static class MyVistor extends VisitorSupport {
		public void visit(Attribute node) {
			System.out.println("Attibute:---" + node.getName() + "="
					+ node.getValue());
		}

		public void visit(Element node) {
			if (node.isTextOnly()) {
				System.out.println("Element:---" + node.getName() + "="
						+ node.getText());
			}else{
				System.out.println("--------" + node.getName() + "-------");
			}
		}

		@Override
		public void visit(ProcessingInstruction node) {
			// TODO Auto-generated method stub
			System.out.println("PI:"+node.getTarget()+" "+node.getText());
		}
	}
}


使用dom4j來將屬性寫入xml

Java代碼 複製代碼
  1. import  java.io.FileWriter;   
  2. import  java.io.IOException;   
  3.   
  4. import  org.dom4j.Document;   
  5. import  org.dom4j.DocumentHelper;   
  6. import  org.dom4j.Element;   
  7. import  org.dom4j.io.OutputFormat;   
  8. import  org.dom4j.io.XMLWriter;   
  9.   
  10. public   class  DWriter {   
  11.   
  12.      public   static   void  main(String[] args) {   
  13.          // TODO Auto-generated method stub   
  14.          try  {   
  15.             XMLWriter writer =  new  XMLWriter( new  FileWriter( "src/author.xml" ));   
  16.             Document doc = createDoc();   
  17.             writer.write(doc);   
  18.             writer.close();   
  19.   
  20.              // Pretty print the document to System.out   
  21.              // 設置了打印的格式,將讀出到控制檯的格式進行美化   
  22.             OutputFormat format = OutputFormat.createPrettyPrint();   
  23.             writer =  new  XMLWriter(System.out, format);   
  24.             writer.write(doc);   
  25.   
  26.         }  catch  (IOException e) {   
  27.              // TODO Auto-generated catch block   
  28.             e.printStackTrace();   
  29.         }   
  30.     }   
  31.   
  32.      public   static  Document createDoc() {   
  33.         Document doc = DocumentHelper.createDocument();   
  34.         Element root = doc.addElement( "root" );   
  35.         Element author1 = root.addElement( "author" ).addAttribute( "name" ,   
  36.                  "James" ).addAttribute( "location" "UK" )   
  37.                 .addText( "Jame Strachan" );   
  38.         Element author2 = root.addElement( "author" ).addAttribute( "name" "Bob" )   
  39.                 .addAttribute( "location" "US" ).addText( "Bob McWrirter" );   
  40.          return  doc;   
  41.     }   
  42.   
  43. }  
import java.io.FileWriter;
import java.io.IOException;

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

public class DWriter {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			XMLWriter writer = new XMLWriter(new FileWriter("src/author.xml"));
			Document doc = createDoc();
			writer.write(doc);
			writer.close();

			// Pretty print the document to System.out
			// 設置了打印的格式,將讀出到控制檯的格式進行美化
			OutputFormat format = OutputFormat.createPrettyPrint();
			writer = new XMLWriter(System.out, format);
			writer.write(doc);

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static Document createDoc() {
		Document doc = DocumentHelper.createDocument();
		Element root = doc.addElement("root");
		Element author1 = root.addElement("author").addAttribute("name",
				"James").addAttribute("location", "UK")
				.addText("Jame Strachan");
		Element author2 = root.addElement("author").addAttribute("name", "Bob")
				.addAttribute("location", "US").addText("Bob McWrirter");
		return doc;
	}

}


使用dom4j寫入到author.xml文件的內容

Xml代碼 複製代碼
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. < root > < author   name = "James"   location = "UK" > Jame Strachan </ author > < author   name = "Bob"   location = "US" > Bob McWrirter </ author > </ root >  
發佈了16 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章