DOMドキュメントオブジェクトモデル
DOM(D ocument O bject M Odel)は、XMLドキュメントの標準メソッドのアクセス操作を定義します。XMLドキュメントのDOMツリービューとして、DOM内のすべての要素の数を読み書きできます。
XMLドキュメントとそのツリー構造:
Dom4j
Dom4jは、XMLを解析するための使いやすいオープンソースライブラリです。Javaに適用すると、優れたパフォーマンス、強力な機能、使いやすさの特徴があります。Dom4jはXMLをDocumentオブジェクトと見なし、XMLタグはDom4jによってELementオブジェクトとして定義されます。
Dom4jトラバースXML
JavaのDom4jパッケージを使用してXMLトラバーサルを実行します。Dom4jパッケージをダウンロードし(URLをクリック)、独自のjdkバージョンをダウンロードして、対応するDom4jバージョンを選択します。ここでは、java8 +に対応するバージョンを選択します。
それをJavaプロジェクトにインポートし、インポート後にdom4j.jarを右クリックして、bulid path-> add to buildpathを選択します。
次に、パッケージが参照ライブラリに表示され、パッケージがプロジェクトにインポートされたことを示していることがわかります。
以下は、XMLファイル操作にDom4jを使用する単純な例です。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hr SYSTEM "hr.dtd">
<!-- 人力资源管理系统 -->
<hr>
<employee no="3309">
<name>张三</name>
<age>32</age>
<salary>9200</salary>
<department>
<name>会计部</name>
<addr>XX大厦</addr>
</department>
</employee>
<employee no="3329">
<name>李四</name>
<age>32</age>
<salary>9200</salary>
<department>
<name>会计部</name>
<addr>XX大厦</addr>
</department>
</employee>
</hr>
対応するDom4j
package dom4j;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class HrReader {
public void readXml() {
String file = "................"; //xml文件路径
// SAXReader类是读取XML文件的核心类
SAXReader reader = new SAXReader();
try {
Document document = reader.read(file);
Element root = document.getRootElement();
List<Element> employees = root.elements("employee");
for (Element employee : employees) {
System.out.println(employee.elementText("name"));
System.out.println(employee.attribute("no").getText());
System.out.println(employee.elementText("age"));
System.out.println(employee.elementText("salary"));
Element department = employee.element("department");
System.out.println(department.elementText("name"));
System.out.println(department.elementText("addr"));
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
HrReader reader = new HrReader();
reader.readXml();
}
}
コンソール出力は次のとおりです。
张三
330932
9200
会计部
XX大厦
李四
332932
9200
会计部
XX大厦
Dom4jには他にも多くの機能があります。詳細については、Dom4japiを参照してください。