XMLの扱い方

JavaからXMLファイル操作する方法

XMLファイルは
「<」と「>」でくくられたタグが
階層的に書かれているのが基本

ただ
タグ開始を数値演算子(不等号)と区別するため
「<」を「&lt」(less than)
「>」を「&gt」(greater than)
として表現するのが望ましい

つまり
「<」/「>」で書かれてるケースと
「&lt」/「&gt」で書かれてるケースとある
XMLを解析(アンマーシャル)する時は
上記4つを意識せんとNG

JavaでのXMLファイル解析用APIは主に2つ
DOM(Document Object Model)
SAX(Simple API for XML

DOM
最初にすべてのファイルの内容を読み込んで解析し
メモリ内にXMLの階層構造に合わせたDOMのオブジェクト群を構築する
XMLファイルの構造に合わせたオブジェクト群を一度に構築するため
メモリを食ってまうのと解析に時間かかるのがデメリット
構築されたオブジェクトをJavaプログラムから扱えるので直感的に操作できるのがメリット
複雑な操作をしたい場合には有効

//DOMを使用するために新しいインスタンスを生成する
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//Documentインスタンス用factoryを生成する
DocumentBuilder builder = factory.newDocumentBuilder();
//解析対象のファイルをDocumentクラスのオブジェクトにする
Document doc = builder.parse(new File("Sample.xml"));
//DocumentオブジェクトからXMLの最上位のタグであるルートタグを取得する
Element root = doc.getDocumentElement();
//最初のノードを取得する
Node node = root.getFirstChild();
System.out.print(node.getNodeValue());

SAX
XMLファイルを先頭から読み込んでいき
タグを検知する毎にイベント通知する
このイベントの通知に対して
実行したい処理を記述する
DOMに比べメモリ容量は少なくて済むのと
解析速度が速いのがメリット



DOMでのXML操作
DOMオブジェクトでは
XMLの階層構造を木構造で表す

「ノード」
木構造を構成する要素(Element)のこと
「属性(Attribute)」や「テキスト」で構成される
最上位ノードは XMLファイルそのものになる

□解析手順
解析ターゲット
<'?xml version="1.0" encoding="Shift _ JIS" ?>
<'sample>テストです!<'/sample>

DocumentBuilderFactoryからオブジェクトを生成する

解析対象となるXMLファイルからXMLファイルを抽象化したDocumentクラスのオブジェクトを取得する

DocumentオブジェクトからXMLの最上位のタグ(ルート タグ)を取得する

sampleタグの最初のタグの中身であるノードを取得する

ノードから内容を取得する

XXX

tag : XML DOM SAX XXX

2009-10-31 17:01 : __lang__xml : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud