⑧.HTTPレスポンスボディを得る(ある場合に限る)(リスト8)
GET,
//リスト8
// DOM化
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilde db = dbf.newDocumentBuilder();
Document doc = db.parse(con.getInputStream());
/* String化
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line;
System.out.println("ResponseBody");
while((line = inputreader.readLine())!= null){
System.out.println(line);
}
*/
⑨.XMLのDOM化,DOMの処理
次は,
JTreeはDefaultMutableTreeNodeを引数とするコンストラクタを持っているので,
//リスト9
//rootノードの作成
Node rootTag = doc.getDocumentElement();
DefaultMutableTreeNode root = new DefaultMutableTreeNode(rootTag.getNodeName());
//rootから前順序で再帰的にdocを辿る
addChildren(rootTag, root);
//Tree作成
JTree tree = new JTree(root);
//中略
private void addChildren(Node node, DefaultMutableTreeNode branch) {
//branchに対して子ノードをaddする
NodeList list = node.getChildNodes();
//子ノードのうちアトリビュートノードだけを処理する
NamedNodeMap attributes = node.getAttributes();
for(int i=0; i<attributes.getLength(); i++){
DefaultMutableTreeNode att = new DefaultMutableTreeNode( attributes.item(i));
branch.add(att);
}
//子ノードのうちエレメントノードとテキストノードを処理する
for( int i=0; i<list.getLength(); i++ ) {
Node child = list.item( i );
if(/*テキストノードならば*/){
//テキストノードの処理
continue;
}
//エレメントノードの処理
DefaultMutableTreeNode tn = new DefaultMutableTreeNode( child.getNodeName());
branch.add( tn );
//追加したエレメントノードをルートとして再帰的にツリーを構成
addChildren(child,tn);
}
}
これでDOMからJteeに変換することができました。これに加えてイベント処理系を利用することで,
//リスト10
try{
ByteArrayOutputStream bufferStream = new ByteArrayOutputStream();
TransformerFactory tff = TransformerFactory.newInstance();
Transformer tr = tff.newTransformer();
tr.transform(new DOMSource(document), new StreamResult(bufferStream));
String st=bufferStream.toString("UTF-8");
}catch(Exception e){}
AtomPubクライアントの紹介
最後に,
- APP Test Client
- 本稿で使わせてもらったJoeGregorioさんのAPP Test Siteのクライアントバージョンです。
- the Ape
- IETFのAtomPubワーキングループで議長を務めているTimBrayさんのクライアントです。ブラウザから使えます。
- Atomic
- AtomicはAtomPubを利用するためのFireFox用プラグインです。REST型のアプリケーションを開発するためのJava軽量フレームワーク"Restlet"を利用したAtomPubクライアント&サーバープロジェクト"atomojo"の一環で作成されました。このプラグインはまだ未実装な機能も多いですが,
作者のAlex Milowskiさんが勢威製作中のようなので今後に期待です。 - MobileAtomJ2ME
- MobileAtomはJ2MEによる携帯アプリのAtomPubクライアントの実装です。2004年ごろのAtomPubの仕様をもとに作成されたものなので,
HTTPメソッドのPUTとDELETEに対応するために, RFCでは認められていないSOAPを一部利用しています。しかし, ソースそのものは実装するときに参考になります。 - Atomic
- ウィザシステムの丸本さんのクライアントソフトです。和製ソフトでは一番有名かもしれません。
まとめ
最終回はAtomPubを試すと銘うって,
また,
最後に,