A、dom4jの技術概要
まず、JDOMはDOMベースの中にカプセル化され、またDOM4JのJDOMには、カプセル化されています。
DOM4JがオープンソースであるXML文書を解析するために、Javaベースのライブラリーは、柔軟性、高いパフォーマンスとAPIのメモリ効率の高い学位を持っています。これは、リストと配列の集合としてJavaを使用して、Javaの最適化です。これは、DOM、SAX、XPathとXSLTを使用することができます。これは、大規模なXML文書の解析は非常に低いメモリフットプリントを持っています。
二、dom4jのライブラリの使用
必要なjarパッケージをダウンロードして公式サイトに行く:dom4jの公式サイト
三、DOM4J分析ステップ
ステップ:
1、最初のロードxmlファイルは、Documentオブジェクトを作成しました
2、ルート要素ドキュメントオブジェクトを介してオブジェクトを取得します
図3に示すように、ルート要素によって.elelemts(タグ名); コレクションを返し、コレクションが立っていました。オブジェクトのすべての要素は、あなたは、ラベルの名前を指定し
、操作する必要がある要素を取得するために、適切なアクションを4に
XMLファイル:
1の<?xml version = "1.0"エンコード= "UTF-8"?>
2 <図書>
3 <ブックSN = "123">
4 <名前>のJava </名前>
5 <価格> 9.9 </価格>
6 <著者>老张</著者>
7 </書籍>
8 <ブックSN = "456">
9 <名前>はPython </名前>
10 <価格> 99.99 </価格>
11 <作者>老李</著者>
12 </書籍>
13 </図書>
テストの解析ファイル:
。1 / *
2 * DocumetはオブジェクトDOM4Jを取得します
。3 * /
。4 @Test
。5 公共 のボイドのgetDocument()がスローDocumentException {
。6 // Documentオブジェクトを作成するために、我々はSAXReaderオブジェクトを作成する必要があります
。7 SAXReaderリーダー= 新しい新しい; SAXReaderを()
。8 // このオブジェクトは、XMLファイルを読み込むために使用し、文書を返します。
9 文献= reader.Read文献(「SRC / Books.xmlを」);
10 // 成功作成するかどうかを確認するコンソールにプリント
11 のSystem.out.println(文書);
12 }
XMLファイルを解析します:
1 /*
2 * 读取 xml 文件中的内容
3 */
4 @Test
5 public void readXML() throws DocumentException {
6 // 需要分四步操作:
7 // 第一步, 通过创建 SAXReader 对象。 来读取 xml 文件, 获取 Document 对象
8 // 第二步, 通过 Document 对象。 拿到 XML 的根元素对象
9 // 第三步, 通过根元素对象。 获取所有的 book 标签对象
10 // 第四步, 遍历每个 book 标签对象。 然后获取到 book 标签对象内的每一个元素, 再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
11 // 第一步, 通过创建 SAXReader 对象。 来读取 xml 文件, 获取 Document 对象
12 SAXReader reader = new SAXReader();
13 Document document = reader.read("src/books.xml");
14 // 第二步, 通过 Document 对象。 拿到 XML 的根元素对象
15 Element root = document.getRootElement();
16 // 打印测试
17 // Element.asXML() 它将当前元素转换成为 String 对象
18 // System.out.println( root.asXML() );
19 // 第三步, 通过根元素对象。 获取所有的 book 标签对象
20 // Element.elements(标签名)它可以拿到当前元素下的指定的子元素的集合
21 List<Element> books = root.elements("book");
22 // 第四步, 遍历每个 book 标签对象。 然后获取到 book 标签对象内的每一个元素,
23 for (Element book : books) {
24 // 测试
25 // System.out.println(book.asXML());
26 // 拿到 book 下面的 name 元素对象
27 Element nameElement = book.element("name");
28 // 拿到 book 下面的 price 元素对象
29 Element priceElement = book.element("price");
30 // 拿到 book 下面的 author 元素对象
31 Element authorElement = book.element("author");
32 // 再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
33 System.out.println("书名" + nameElement.getText() + " , 价格:"
34 + priceElement.getText() + ", 作者: " + authorElement.getText());
35 }
36 }