JavaはDOMドキュメント操作とXMLファイルの相互変換を実現する
この論文では、DOMの概念と内部論理構造を簡単に説明し、DOMドキュメント操作とXMLファイルの相互変換のjava実装プロセスの例を説明します.1.DOMプロフィール現在、W 3 Cは2000年11月13日に規範DOM level 2を発売した.ドキュメントオブジェクトモデル(DOM)は、HTMLおよびXMLドキュメントのプログラミングインタフェース仕様であり、プラットフォームおよび言語とは無関係であるため、様々な言語で様々なプラットフォームで実現することができる.このモデルは、THMLファイルとXMLファイルのメモリ内の論理構造(すなわちドキュメント)を定義し、THMLファイルとXMLファイルにアクセス、アクセスする方法を提供します.DOM仕様により、DOMドキュメントとXML間の相互変換を実現し、対応するDOMドキュメントの内容を遍歴、操作することができる.XMLファイルを自由に操作するにはDOM仕様が用いられるといえる.2.DOM内部論理構造DOMドキュメントの論理構造は、ノードツリーとして記述することができる.XMLファイルの解析処理により、XMLファイルの要素はDOMドキュメントのノードオブジェクトに変換されます.DOMのドキュメントノードにはDocument、Element、Comment、Typeなどのノードタイプがあり、各DOMドキュメントにはDocumentノードが必要であり、ノードツリーのルートノードである.サブノード、またはTextノード、Commentノードなどのリーフノードがあります.任意のフォーマットが良好なXMLファイルの各要素には、DOMドキュメントのノードタイプが対応しています.DOMインタフェースでXMLファイルをDOMドキュメントに変換すると、XMLファイルを自由に処理できます.3.javaのDOMインタフェースDOM仕様が提供するAPIの仕様、現在Sun社が発売しているjdk 1.4テスト版のjava APIはDOM level 2 Core推奨インタフェースの意味説明に従い、対応するjava言語の実装を提供しています.org.xml.domではjkd 1.4 Document、DocumentType、Node、NodeList、Element、Textなどのインタフェースが提供され、これらのインタフェースはDOMドキュメントへのアクセスに必要です.これらのインタフェースを使用して、DOMドキュメントを作成、遍歴、変更できます.javaxでxml.parsersではjkd 1.4 DoumentBuilderとDocumentBuilderFactoryの組み合わせでXMLファイルを解析し、DOMドキュメントに変換できます.javaxでxml.transform.domとjavax.xml.transform.streamでjdk 1.4 DOMSourceクラスとStreamSourceクラスが提供され、生成されたXMLファイルに更新されたDOMドキュメントを書き込むことができます.4.ルーチン4.1 XMLファイルをDOMドキュメントに変換するプロセスは、XMLファイル解析器を取得し、XMLファイルをDOMドキュメントに変換するプロセスである.Jdk1.4において、Documentインタフェースは、XMLファイル全体に対応するドキュメントツリーを記述し、ドキュメントデータへのアクセスを提供することが、このステップの目的である.Documentインタフェースは、XMLドキュメントからDOMドキュメントインスタンスを取得するAPIを含むクラスDocumentBuilderから取得することができる.XMLの解析器はクラスDocumentBuilderFactoryから取得できます.jdk 1で.4では、XMLファイルをDOMドキュメントに変換するには、
4.2 DOMドキュメントを巡ってインタフェースクラスdocumentインスタンスを取得すると、DOMのドキュメントツリーにアクセスできます.DOMドキュメントを巡回するには、まずRoot要素を取得します.次に、Root要素のサブノードのリストを取得します.ここでは再帰的な方法で遍歴の目的を実現する.ccid_nobr>
ここでGetElement法は以下のように実現される:
注意:上のコードは、ノードタイプとTextタイプのオブジェクトのみを表示します.これらのタイプIDは、それぞれ1と3です.4.3 DOMドキュメントを修正DOMドキュメントを修正するAPIはDOM level 2 Core仕様で説明した、jkd 1.4のorg.xml.domではこれらのAPIが実現されている.DOM文書の修正操作は主にDocument、Element、Node、Textなどのクラスに集中しており、ここで示した例では解析したDOM文書に一連のオブジェクトを追加し、XMLファイルに記録を追加することに対応している.
4.4 DOMドキュメントをXMLファイル
ここではwindows 2000におけるjdk 1の完全なプログラムを提供する.4環境で実行します.以上、読者がDOM操作の考え方を理解できる例を示した.DOMに対する操作はいずれもDOM仕様に従っているため、他の言語のDOMに対する処理にも適用される.
<ccid_code>// XML
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// XML DOM , DOM。
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse( new File(FileName) );</ccid_code>
4.2 DOMドキュメントを巡ってインタフェースクラスdocumentインスタンスを取得すると、DOMのドキュメントツリーにアクセスできます.DOMドキュメントを巡回するには、まずRoot要素を取得します.次に、Root要素のサブノードのリストを取得します.ここでは再帰的な方法で遍歴の目的を実現する.ccid_nobr>
<ccid_code>// Root
Element element = document.getDocumentElement();
// Root
nodelist = element.getChildNodes();
// DOM
GetElement(nodelist);</ccid_code>
ここでGetElement法は以下のように実現される:
<ccid_code>public void GetElement(NodeList nodelist){
Node cnode;
int i,len;
String str;
if(nodelist.getLength() == 0)
//
return;
}
for(i=0;i 1)
System.out.println(" "+str+" "+len);
}
}
}</ccid_code>
注意:上のコードは、ノードタイプとTextタイプのオブジェクトのみを表示します.これらのタイプIDは、それぞれ1と3です.4.3 DOMドキュメントを修正DOMドキュメントを修正するAPIはDOM level 2 Core仕様で説明した、jkd 1.4のorg.xml.domではこれらのAPIが実現されている.DOM文書の修正操作は主にDocument、Element、Node、Textなどのクラスに集中しており、ここで示した例では解析したDOM文書に一連のオブジェクトを追加し、XMLファイルに記録を追加することに対応している.
<ccid_code>// Root
Element root = document.getDocumentElement();
// DOM Element
Element booktype = document.createElement("COMPUTES");
// root
root.appendChild(cdrom);
// DOM Element
Element booktitle = document.createElement("Title");
// booktype
booktype.appendChild(booktitle);
// DOM Text
Text bookname = document.createTextNode("understand Corba");
// bookname
booktitle.appendChild(bookname);</ccid_code>
4.4 DOMドキュメントをXMLファイル
<ccid_code>// DOM XML , jdk1.4 , TransformerFactory
// , Transformer API。
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformer transformer = tfactory.newTransformer();
// DOM DOMSource , 。
DOMSource source = new DOMSource(document);
/* StreamResult , DOM ,
XML , ,HTML 。 XML 。*/
StreamResult result = new StreamResult(new File(“text.xml”));
// API, DOM XML 。
transformer.transform(source,result);</ccid_code>
ここではwindows 2000におけるjdk 1の完全なプログラムを提供する.4環境で実行します.以上、読者がDOM操作の考え方を理解できる例を示した.DOMに対する操作はいずれもDOM仕様に従っているため、他の言語のDOMに対する処理にも適用される.