分析DOM4Jの00 04Java XML Web開発

1 DOM4Jのご紹介

DOM4JはパーサDOM4Jを提供する、XML解析のための組織です。

あなたが使用したい、のdom4jのではないのJava SE一部:
インポートdom4jのに必要な最初のステップは、jarファイルのパッケージを提供

ドキュメントを取得します
public class SAXReader extends java.lang.Object

SAXReader reader = new SAXReader();
Document document = reader.read(url);

Documentインタフェースは、親ノードである
あなたがノードに内部を見つけ、文書法ではしたくない場合- |。

方法 説明
公共要素getRootElement() ルートノードを取得し、要素を返します

要素がインターフェイスで、インターフェイスは、親ノードがあります

方法 説明
公共要素のgetParent() 親ノードを取得します。
公共要素はaddElement タグを追加します
公共要素要素(QNAME) 最初のサブラベル以下のラベルを取得し、QNAMEは名札を指し、
公共のリスト要素(QNAME) すべてのタグ(1)の子下記取得し、QNAMEは名札を指し、
パブリックリストの要素を() それは、(1)以下のサブラベル・タグのすべてを取得します

クエリXML操作のための2を使用DOM4J

<?xml version="1.0" encoding="UTF-8"?>

<person> 
  <p1 id1="love"> 
    <name>lks</name>  
    <age>30</age>  
  </p1>  
  <p1> 
    <name>hhy</name>  
    <age>20</age> 
  </p1> 
</person>

クエリ内のすべてのname要素の値。
(1)パーサを作成します。
(2)文書得た
ルートノードを与える(3)
(4)タグは、P1の全てを取得する:使用要素(QNAME)メソッドは、P1のそれぞれを与えるために、リストをトラバース次いで、すべてのコレクションのリストを返します。
(5)名前与える:P1の実行要素(QNAME)メソッドは、要素の戻り
値を取得するためのgetText()メソッド名の値を(6)得られた内部を

public static void allName() throws Exception{
		SAXReader saxReader = new SAXReader();
		Document document = saxReader.read("src/dom4jlearn/person.xml");
		Element root = document.getRootElement();
		List<Element> p1 = root.elements("p1");
		for(Element e : p1) {
			Element name = e.element("name");
			String str = name.getText();
			System.out.println(str);
		}
	}

最初のクエリname要素の値。
(1)パーサを作成します。
(2)ドキュメントを得た
(図3)のルートノードを与える
(4)に与えるP1最初の要素
(5)は、次のP1名要素与える
(6)名要素内部の値を与えるために

public static void getFirstName() throws Exception{
		SAXReader saxReader = new SAXReader();
		Document document = saxReader.read("src/dom4jlearn/person.xml");
		Element root = document.getRootElement();
		Element p1 = root.element("p1");
		Element name = p1.element("name");
		System.out.println(name.getText());
	}

name要素の2番目のクエリ値。
(1)パーサを作成します。
文献から得て、(2)
ルートノードを与える(3)
(4)は、全てのP1要素与える
第2のトラバースP1を得た(5)
(6)次の第二のP1 name要素与える
名要素内部の値を与えるために(7)

public static void getSecondName()throws Exception{
		SAXReader saxReader = new SAXReader();
		Document document = saxReader.read("src/dom4jlearn/person.xml");
		Element root = document.getRootElement();
		List<Element> p1 = root.elements("p1");
		Element name = p1.get(1).element("name");
		System.out.println(name.getText());
	}

3つの使用DOM4Jの追加ノードが最後に達成するために

最初P1ラベルの最後に要素を追加します<sex>女</sex>
(1)パーサを作成します。
(2)ドキュメントを得た
ルートノード得た(3)
最初のP1を得るために(4):use要素()メソッド
(5)次のP1添加元素:使用p1.addElement(「性別」)方法が要素を返します
(6)次のテキストを追加する要素の終了後:性別使用のsetText(「テキスト」)方法
createPrettyPrint()、使用するXMLWriter、直接新しい、伝記を使用してフォーマット(OUTPUTFORMAT)、(7)書き込みXMLへ戻ります2つのパラメータは、最初のパラメータであるXMLパスは、第2のパラメータは、フォーマットタイプの値です。書き込み()書き戻しを使用した後

public static void addSex() throws Exception{
		SAXReader saxReader = new SAXReader();
		Document document = saxReader.read("src/dom4jlearn/person.xml");
		Element root = document.getRootElement();
		Element p1 = root.element("p1");
		Element sex = p1.addElement("sex");
		sex.setText("女");
		OutputFormat format = OutputFormat.createPrettyPrint();
		XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/dom4jlearn/person.xml"), format);
		xmlWriter.write(document);
	}
	

4 DOM4Jは、特定の位置に追加の要素を使用して実装しました

年齢ラベルの下の最初のP1の前に追加<school>fjut</school>
のパーサを作成するために、(1)。
文献から得て、(2)
ルートノード与える(3)
最初のP1の(4)取得
(5)全ての素子P1を得る:要素()メソッドは、リストのコレクションを返し
アド内部A法(6)リスト(INTインデックス、Eの要素)は、特定の場所の要素に追加
| - DocumentHelper.createElementを使用して要素を作成()、下のテキストを作成します。
(7)ライトバックXML


```java
public static void addSchool() throws Exception{
		SAXReader saxReader = new SAXReader();
		Document document = saxReader.read(PATH);
		Element root = document.getRootElement();
		Element p1 = root.element("p1");
		List<Element> list = p1.elements();
		Element school = DocumentHelper.createElement("school");
		school.setText("fjut");
		list.add(1, school);
		OutputFormat format = OutputFormat.createPrettyPrint();
		XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(PATH), format);
		xmlWriter.write(document);
	}

# 5 dom4j里面封装方法的操作
可以对得到document的操作和回写xml操作,封装成方法,也可以把传递的文件路径,封装成一个常量,好处是可以提高开发速度,可以提高代码可维护性。 
1、返回document:public static Document getDocument(String path)
2、回写xml:public static void xmlWriters(String path, Document document);

```java
public final static String PATH = "src/dom4jlearn/person.xml";
	
	public static Document getDocument() {
		SAXReader saxReader = new SAXReader();
		try {
			Document document = saxReader.read(PATH);
			return document;
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
	public static void xmlWriters(Document document) {
		
		try {
			OutputFormat format = OutputFormat.createPrettyPrint();
			XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(PATH), format);
			xmlWriter.write(document);
		} 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();
		}
		
	}

6変性ノード演算実装DOM4Jを使用して

要素次の第1の値P1年齢を修正<age>30</age>
(1)ドキュメントを得た
(2)に与えるP1第素子
P1以下最初の年齢取得する(3)
30の値を変更する(4)
(5)ライトバックXML

public static void modifyAge() {
		Document document = Dom4jUtils.getDocument();
		
		Element root = document.getRootElement();
		Element p1 = root.element("p1");
		Element age = p1.element("age");
		age.setText("300");
		
		Dom4jUtils.xmlWriters(document);
	}

7使用dom4jのは、ノード削除操作を実現します

削除P1は、下にある<school>fjut</school>
ドキュメント与えるために(1)
(2)ルートノードを求める
(3)第1のラベルP1を求める
(4)第一学校素子P1で得られた
(5)削除P1学校の要素を用いて
(6) XMLの書き込みバック

public static void removeSchool() {
		Document document = getDocument();
		
		Element root = document.getRootElement();
		Element p1 = root.element("p1");
		Element school = p1.element("school");
		p1.remove(school);
		
		xmlWriters(document);
	}

8 DOM4Jは、取得した操作の属性値を使用して実装しました

属性ID1のP1の内部の最初の値を取得します。
(1)文書を与えるために
(2)ルートノード取得
(3)最初のP1要素得る
第1の素子P1のプロパティ値を取得し(4)、公衆文字属性値(String属性) 。

public static void getAttribute() {
		Document document = getDocument();
		
		Element root = document.getRootElement();
		Element p1 = root.element("p1");
		System.out.println(p1.attributeValue("id1"));
	}
公開された77元の記事 ウォン称賛11 ビュー2629

おすすめ

転載: blog.csdn.net/weixin_43762330/article/details/104533554