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ドキュメントに変換するには、
<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に対する処理にも適用される.