XML —— Java 操作 XML 工具包( JDOM&DOM4J )
阿新 • • 發佈:2018-11-03
1. JDOM 引入
- JDOM 是一種使用 XML(標準通用標記語言下的一個子集) 的獨特 Java 工具包,用於快速開發 XML 應用 程式。
- 集合DOM 和 SAX 的優點
- 需要引入jar包
- JDOM 官方網站:http://www.jdom.org/
- 小缺陷:生成文件不會格式化,需要手動格式化 ( ctrl+shift+F)
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import
import java.util.List; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder; public class JDOM02 { public static void main(String[] args) throws Exception{ SAXBuilder builder=new SAXBuilder(); // SAXBuilder Document document=builder.build("src/students.xml"); Element students=document.getRootElement(); List studentList=students.getChildren("student"); for(int i=0;i<studentList.size();i++){ Element student=(Element)studentList.get(i); String id=student.getAttributeValue("id"); String name=student.getChildText("name"); String sex=student.getChildText("sex"); String age=student.getChildText("age"); System.out.println("學號:"+id+";姓名:"+name+";性別:"+sex+";年齡:"+age); } } }
2. DOM4J 引入
- dom4j 是一個 Java 的 XML API,類似於 jdom,用來讀寫 XML 檔案的。
- dom4j 是一個非常非常優秀的 JavaXML API,具有效能優異、功能強大和極端易用使用的特點,同時它也是一個開放原始碼的軟體,可以在 SourceForge 上找到它。
- 在 IBM developerWorks 上面可以找到一篇文章,對主流的 Java XML API 進行的效能、功能和易用性 的評測,dom4j 無論在哪個方面都是非常出色的。
- 如今可以看到越來越多的 Java 軟體都在使用 dom4j 來讀寫 XML,特別值得一提的是連 Sun 的 JAXM 也在用 dom4j。
- jar 包, Hibernate 用它來讀寫配置檔案。
- DOM4J 官方網站:http://www.dom4j.org/
- 生成的XML檔案是已格式化的
-
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; public class DOM4J01 { public static void main(String[] args) { Document document=DocumentHelper.createDocument(); //獲取文件 Element studentElement=document.addElement("student"); //通過文件直接新增元素 studentElement.addAttribute("id", "001"); //新增屬性 studentElement.addAttribute("aa", "xx"); Element name=studentElement.addElement("name"); //新增元素 name.setText("張三"); //設定元素值 Element sex=studentElement.addElement("sex"); sex.setText("男"); Element age=studentElement.addElement("age"); age.setText("20"); OutputFormat format=OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); try { XMLWriter writer=new XMLWriter(new FileOutputStream("src/student3.xml"),format); // 輸出 writer.write(document); writer.close(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
import java.util.Iterator; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class DOM4J02 { public static void main(String[] args) throws Exception{ SAXReader saxReader=new SAXReader(); //SAXReader Document document=saxReader.read("src/students.xml"); Element rootElement=document.getRootElement(); Iterator iter=rootElement.elementIterator(); while(iter.hasNext()){ Element studentElement=(Element)iter.next(); System.out.println("學號:"+studentElement.attributeValue("id")); System.out.println("姓名:"+studentElement.elementText("name")); System.out.println("性別:"+studentElement.elementText("sex")); System.out.println("年齡:"+studentElement.elementText("age")); System.out.println("========="); } } }