解析xml筆記
dom是解析xml的底層介面之一(另一種是sax)
而jdom和dom4j則是基於底層api的更高階封裝
而jdom和dom4j則是基於底層api的更高階封裝
dom是通用的,而jdom和dom4j則是面向java語言的
DOM程式設計相對簡單,但是速度比較慢,佔用記憶體多
SAX程式設計複雜一些,但是速度快,佔用記憶體少
DOM4J
雖然 DOM4J 代表了完全獨立的開發結果,但最初,它是 JDOM 的一種智慧分支。它合併了許多超出基本 XML 文件表示的功能,包括整合的 XPath 支援、XML Schema 支援以及用於大文件或流化文件的基於事件的處理。它還提供了構建文件表示的選項,它通過 DOM4J API 和標準 DOM 介面具有並行訪問功能。從 2000 下半年開始,它就一直處於開發之中。
為支援所有這些功能,DOM4J 使用介面和抽象基本類方法。DOM4J 大量使用了 API 中的 Collections 類,但是在許多情況下,它還提供一些替代方法以允許更好的效能或更直接的編碼方法。直接好處是,雖然 DOM4J 付出了更復雜的 API 的代價,但是它提供了比 JDOM 大得多的靈活性。
在新增靈活性、XPath 整合和對大文件處理的目標時,DOM4J 的目標與 JDOM 是一樣的:針對 Java 開發者的易用性和直觀操作。它還致力於成為比 JDOM 更完整的解決方案,實現在本質上處理所有 Java/XML 問題的目標。在完成該目標時,它比 JDOM 更少強調防止不正確的應用程式行為。
DOM4J 是一個非常非常優秀的Java XML API,具有效能優異、功能強大和極端易用使用的特點,同時它也是一個開放原始碼的軟體。如今你可以看到越來越多的 Java 軟體都在使用 DOM4J 來讀寫 XML,特別值得一提的是連 Sun 的 JAXM 也在用 DOM4J。
package test;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.dom4j.io.OutputFormat;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
public class TestWrite {
public void WriteXml() {
//文件物件
Document document = DocumentHelper.createDocument();
//根節點
Element root = document.addElement("books");
//加屬性
root.addAttribute("type", "小說");
//加註釋
root.addComment("書店");
//子元素
Element book = root.addElement("book");
book.addAttribute("price", "56.5");
Element title = book.addElement("title");
title.setText("aaaaa");
//子元素
Element book1 = root.addElement("book");
book1.addAttribute("price", "66.5");
Element title1 = book1.addElement("title");
title1.setText("bbbbb");
//子元素
Element book2 = root.addElement("book");
book2.addAttribute("price", "76.5");
Element title2 = book2.addElement("title");
title2.setText("ccccc");
// 設定字型
OutputFormat format = OutputFormat.createCompactFormat();
format.setEncoding("GBK");
try {
XMLWriter output = new XMLWriter(new FileWriter(new File(
"books.xml")), format);
output.write(document);
output.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void ReadXml() {
SAXReader saxReader = new SAXReader();
try {
Document document = saxReader.read("books.xml");
// 1查詢屬性
List list = document.selectNodes("//book/@price");// 1查詢屬性
// 獲取//book/@price的值的集合
for (int i = 0; i < list.size(); i++) {
Attribute attr = (Attribute) list.get(i);
if (Float.parseFloat(attr.getValue()) > 60)
attr.setValue("1000");// 設定新值
}
// 2查詢元素
List list1 = document.selectNodes("//title");// 2查詢元素book
for (int j = 0; j < list1.size(); j++) {
Element elem = (Element) list1.get(j);
//elem.setText("mmmmmmmmmm");
}
//3獲取價格等於1000的書的標題
List list2 = document.selectNodes("//book[@price='1000']/title");
Iterator iter = list2.iterator();
while (iter.hasNext()) {
Element el = (Element) iter.next();
System.out.println(el.getText());
}
//4 設定字型
OutputFormat format = OutputFormat.createCompactFormat();// 縮排
format.setEncoding("GBK");// 字符集
XMLWriter output = new XMLWriter(new FileWriter(new File(
"books.xml")), format);
output.write(document);
output.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
TestWrite testwrite = new TestWrite();
testwrite.ReadXml();
}
}
相關文章
- 【Go學習筆記16】解析xmlGo筆記XML
- xml筆記XML筆記
- Java解析XML學習筆記1 – 四種方法比較JavaXML筆記
- 【筆記】oracle xml (一)筆記OracleXML
- Xml解析XML
- Android學習筆記之AndroidManifest.xml檔案解析(詳解)Android筆記XML
- XML學習筆記–背誦版XML筆記
- iOS – XML解析iOSXML
- go 解析xmlGoXML
- xml php 解析XMLPHP
- iOS - XML解析iOSXML
- 【Java】解析xmlJavaXML
- Java解析XMLJavaXML
- jaxb解析xmlXML
- DOM解析XMLXML
- Python解析xml[xml.dom]PythonXML
- JSP筆記-XML 資料處理JS筆記XML
- 《無廢話XML》的一點筆記XML筆記
- 深入解析css-筆記CSS筆記
- EOL 筆記:核心類解析筆記
- 175.XML解析XML
- C# XML解析C#XML
- 使用jdom解析XMLXML
- XML解析技術XML
- xml解析之domXML
- XML資料解析XML
- 關於xml解析XML
- spring上 -基於Xml配置bean筆記SpringXMLBean筆記
- 讀取xml檔案 解析雙層xmlXML
- yii學習筆記--url解析筆記
- 維修筆記本的技巧 筆記本維修解析辦法筆記
- XML 檔案解析實踐 (DOM 解析)XML
- python之XML解析PythonXML
- jdom解析xml檔案XML
- JAVA進行XML解析JavaXML
- java使用sax解析xmlJavaXML
- GData解析XML檔案XML
- python 的xml解析PythonXML