JAVAコア知識点--Dom 4 jを使用してXMLを解析
9614 ワード
目次
一、Dom 4 j概要
二、ファイルのダウンロード
三、JavaでDom 4 jを使ってXMLを解析する
Documentオブジェクトの作成
アクションノードオブジェクト
アクションノードオブジェクトのプロパティ
XMLファイルへのDocumentオブジェクトの保存
文字列とXML変換
一、Dom 4 j概要
dom 4 jはJavaのXML APIで、jdomのアップグレード品で、XMLファイルを読み書きするために使われています.dom 4 jは非常に優れたJavaXML APIであり、性能が優れ、機能が強く、極めて使いやすいという特徴があり、sun社の公式dom技術を上回る性能を有し、オープンソースのソフトウェアでもあり、SourceForgeで見つけることができます.IBM developerWorksでは、主流のJava XML APIの性能、機能、使いやすさを評価する文章も見つけられるので、dom 4 jはどの面でも優れていることがわかります.今ではdom 4 jを使ってXMLを読み書きするJavaソフトが増えているのが見えますが、特にSunのJAXMもdom 4 jを使っています.これはすでにjarパッケージを使用する必要があります.Hibernateもプロファイルを読み書きします.
二、ファイルのダウンロード
公式サイトのアドレス:http://www.dom4j.org/dom4j-1.6.1/
三、JavaでDom 4 jを使ってXMLを解析する
Documentオブジェクトの作成
DOM 4 jでは、DocumentオブジェクトはXMLドキュメント全体を表し、その内部にXMLのデータ情報をDom 4 jツリーとして格納する.
Documentオブジェクトは、次の3つの方法で入手できます.
アクションノードオブジェクト
DOM 4 jでは、Dom 4 jツリー内の各ノードを表すためにElementオブジェクトが使用され、Elementオブジェクトには属性、テキストコンテンツ、ネーミングスペース、サブノードなどのコンテンツが含まれていてもよい.
「dom.xml」というXMLファイルの操作を例にとると、DOM 4 jノードの操作の一般的な方法を簡単に示します.この「dom.xml」の内容は以下の通りです.
DOM 4 jのノードオブジェクトをJavaコードで操作し,その完全なコードは以下の通りである.
プログラムの実行が完了すると、コンピュータD:dom 4 jディレクトリの下に「dom 4 j_dom.xml」というXMLファイルが自動的に作成されます.その内容は次のとおりです.
アクションノードオブジェクトのプロパティ
また,1つのXMLファイルの実際の動作を例に,DOM 4 jノードオブジェクトの属性動作の一般的な方法を簡単に例示する.コンピュータD:dom 4 jディレクトリの下に、次のような内容の「attribute.xml」というXMLファイルがあります.
DOM 4 jノードオブジェクトのプロパティはJavaコードで操作され、その完全なコードは以下の通りです.
プログラムの実行が完了すると、コンピュータD:dom 4 jディレクトリの下に「dom 4 j_attribute.xml」というXMLファイルが自動的に作成されます.その内容は次のとおりです.
XMLファイルへのDocumentオブジェクトの保存
文字列とXML変換
前例の「attribute.xml」ファイルを例に、変換の例を続けます.
一、Dom 4 j概要
二、ファイルのダウンロード
三、JavaでDom 4 jを使ってXMLを解析する
Documentオブジェクトの作成
アクションノードオブジェクト
アクションノードオブジェクトのプロパティ
XMLファイルへのDocumentオブジェクトの保存
文字列とXML変換
一、Dom 4 j概要
dom 4 jはJavaのXML APIで、jdomのアップグレード品で、XMLファイルを読み書きするために使われています.dom 4 jは非常に優れたJavaXML APIであり、性能が優れ、機能が強く、極めて使いやすいという特徴があり、sun社の公式dom技術を上回る性能を有し、オープンソースのソフトウェアでもあり、SourceForgeで見つけることができます.IBM developerWorksでは、主流のJava XML APIの性能、機能、使いやすさを評価する文章も見つけられるので、dom 4 jはどの面でも優れていることがわかります.今ではdom 4 jを使ってXMLを読み書きするJavaソフトが増えているのが見えますが、特にSunのJAXMもdom 4 jを使っています.これはすでにjarパッケージを使用する必要があります.Hibernateもプロファイルを読み書きします.
二、ファイルのダウンロード
公式サイトのアドレス:http://www.dom4j.org/dom4j-1.6.1/
三、JavaでDom 4 jを使ってXMLを解析する
Documentオブジェクトの作成
DOM 4 jでは、DocumentオブジェクトはXMLドキュメント全体を表し、その内部にXMLのデータ情報をDom 4 jツリーとして格納する.
Documentオブジェクトは、次の3つの方法で入手できます.
// XML , document
SAXReader saxReader = new SAXReader();
Document document1 = saxReader.read(new File("D:\\dom4j\\dom.xml"));
// XML , document .
String xmlText = "1 ";
Document document2 = DocumentHelper.parseText(xmlText);
// document
Document document3 =DocumentHelper.createDocument(DocumentHelper.createElement("root").addAttribute("id", "1"));
System.out.println(document3.getRootElement().attributeValue("id")); // :1
アクションノードオブジェクト
DOM 4 jでは、Dom 4 jツリー内の各ノードを表すためにElementオブジェクトが使用され、Elementオブジェクトには属性、テキストコンテンツ、ネーミングスペース、サブノードなどのコンテンツが含まれていてもよい.
「dom.xml」というXMLファイルの操作を例にとると、DOM 4 jノードの操作の一般的な方法を簡単に示します.この「dom.xml」の内容は以下の通りです.
1
E000
TEST106608821
TEST106608822
TEST106608823
DOM 4 jのノードオブジェクトをJavaコードで操作し,その完全なコードは以下の通りである.
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class HelloDom4j
{
@SuppressWarnings("unchecked")
public static void main(String[] args) throws DocumentException, IOException
{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("D:\\dom4j\\dom.xml");
// Document
Element root = document.getRootElement();
System.out.println(root.getName());
// "assignIds"
Element assignIds = root.element("assignIds");
System.out.println(assignIds.getName());
// "assignIds" "assignId" ,
List elements = assignIds.elements("assignId");
Iterator it = elements.iterator();
while (it.hasNext())
{
Element element = it.next();
//
System.out.println(element.getText());
}
// "assignIds" "assignId"
Element element = assignIds.addElement("assignId");
//
element.setText("TEST106608824");
// "assignIds" "assignId"
Element firstAssingId = assignIds.element("assignId");
assignIds.remove(firstAssingId);
// CDATA
Element cddataElement = root.addElement("content");
cddataElement.addCDATA(" CDATA !");
// Document XML
XMLWriter xmlWriter = new XMLWriter(new OutputStreamWriter(new FileOutputStream("D:\\dom4j\\dom4j_dom.xml"), "UTF-8"));
xmlWriter.write(document);
xmlWriter.close();
}
}
プログラムの実行が完了すると、コンピュータD:dom 4 jディレクトリの下に「dom 4 j_dom.xml」というXMLファイルが自動的に作成されます.その内容は次のとおりです.
1
E000
TEST106608822
TEST106608823
TEST106608824
アクションノードオブジェクトのプロパティ
また,1つのXMLファイルの実際の動作を例に,DOM 4 jノードオブジェクトの属性動作の一般的な方法を簡単に例示する.コンピュータD:dom 4 jディレクトリの下に、次のような内容の「attribute.xml」というXMLファイルがあります.
Hello Dom4j
DOM 4 jノードオブジェクトのプロパティはJavaコードで操作され、その完全なコードは以下の通りです.
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class HelloDom4j
{
@SuppressWarnings("unchecked")
public static void main(String[] args) throws DocumentException, IOException
{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("D:\\dom4j\\attribute.xml");
//
Element root = document.getRootElement();
System.out.println(root.getName()); // :Request
// "service"
Attribute attribute = root.attribute("service");
//
System.out.println(attribute.getText()); // :OrderSearchService
System.out.println(attribute.getData()); // :OrderSearchService
System.out.println(attribute.getValue()); // :OrderSearchService
// "lang"
Attribute lang = root.attribute("lang");
System.out.println(lang.getData()); // :zh-CN
root.remove(attribute);
// "id" , "request"
root.addAttribute("id", "request");
// "Head"
Element head = root.element("Head");
// "Head" "name" "dom4j"
Attribute nameAttr = head.attribute("name");
System.out.println(nameAttr.getData());// :head
nameAttr.setValue("dom4j");
System.out.println(nameAttr.getData());// :dom4j
// "OrderSearch"
Element orderSearch = root.element("Body").element("OrderSearch");
// "OrderSearch"
Iterator it = orderSearch.attributeIterator();
while (it.hasNext())
{
Attribute attr = it.next();
System.out.println(attr.getText()); // :orderSearch 2019586321
}
// Document XML
XMLWriter xmlWriter = new XMLWriter(new FileWriter("D:\\dom4j\\dom4j_attribute.xml"));
xmlWriter.write(document);
xmlWriter.close();
}
}
プログラムの実行が完了すると、コンピュータD:dom 4 jディレクトリの下に「dom 4 j_attribute.xml」というXMLファイルが自動的に作成されます.その内容は次のとおりです.
Hello Dom4j
XMLファイルへのDocumentオブジェクトの保存
//
XMLWriter xmlWriter = new XMLWriter(new FileWriter("D:\\dom4j\\dom4j_attribute.xml"));
xmlWriter.write(document);
xmlWriter.close();
//
OutputFormat format=OutputFormat.createPrettyPrint(); //createPrettyPrint() ,createCompactFormat()
format.setEncoding("UTF-8");
XMLWriter xmlWriter = new XMLWriter(new FileWriter("D:\\dom4j\\dom4j_attribute.xml"),format);
xmlWriter.write(document);
xmlWriter.close();
文字列とXML変換
前例の「attribute.xml」ファイルを例に、変換の例を続けます.
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class HelloDom4j
{
public static void main(String[] args) throws DocumentException
{
// XML
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("D:\\dom4j\\attribute.xml");
String documentStr = document.asXML();
System.out.println(documentStr);
/*
* :
*
*
* Hello Dom4j
*
*
*
*
*/
Element root = document.getRootElement();
String rootStr = root.asXML();
System.out.println(rootStr);
/*
* :
*
* Hello Dom4j
*
*
*
*
*/
// XML
String xmlStr = "Hello Dom4j";
Document xmlDoc = DocumentHelper.parseText(xmlStr);
}
}