- 締切済み
XML、DOMに関しての質問
XML、DOMに関しての質問 お世話になっております。 今回ご質問させて頂いたのは、 まず、下記のようなXMLがあった場合に 一旦全部の階層を読み込んで、そこから最下層だった場合のみ はじきたいのですが、どのようにしたらいいでしょうか? <LIST> - <FILE_LIST REQUESTPATH="\\abc\top"> - <FOLDER name="folder1" size="nonebyte" time="2009/05/12 19:13:32"> - <FOLDER name="folder1_1" size="none" time="2009/05/12 19:19:55"> <FOLDER size="none" time="2009/05/12 19:20:36">folder1_1_1</FOLDER> </FOLDER> </FOLDER> </FILE_LIST> - <FILE_LIST REQUESTPATH="\\abc\app"> - <FOLDER name="folder1" size="nonebyte" time="2009/05/12 19:13:32"> - <FOLDER name="folder1_1" size="none" time="2009/05/12 19:19:55"> <FOLDER size="none" time="2009/05/12 19:20:36">folder1_1_1</FOLDER> <FOLDER size="none" time="2009/05/12 19:19:54">folder1_1_2</FOLDER> </FOLDER> - <FOLDER name="folder1_2" size="none" time="2009/05/12 16:19:49"> <FOLDER size="none" time="2009/05/12 16:19:49">folder1_2_1</FOLDER> </FOLDER> </FOLDER> - <FOLDER name="folder2" size="nonebyte" time="2009/05/12 19:13:32"> - <FOLDER name="folder2_1" size="none" time="2009/05/12 19:19:55"> <FOLDER size="none" time="2009/05/12 19:20:36">folder2_1_1</FOLDER> <FOLDER size="none" time="2009/05/12 19:19:54">folder2_1_2</FOLDER> </FOLDER> - <FOLDER name="folder2_2" size="none" time="2009/05/12 16:19:49"> <FOLDER size="none" time="2009/05/12 16:19:49">folder2_2_1</FOLDER> </FOLDER> </FOLDER> </FILE_LIST> </LIST> 全部の階層を読み込むという部分に関しては 実装出来ているのですが、最下層だった場合 という条件が思い浮かばず 悩んでおります。 何がご教授頂ければと思います。 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- think49
- ベストアンサー率59% (285/482)
JAVAはわかりませんが、DOM API はJavaScriptと同じだと思われるので、サンプルを。(未検証です) var elements = document.getElementsByTagName('FOLDER'); for (var i=0,l=folders.length; i<l; i++) { if (elements.item(i).childNodes.length === 1 && elements.item(i).firstChild.nodeType === elements.firstChild.TEXT_NODE) { // 最下層の要素 } }
- SaKaKashi
- ベストアンサー率24% (755/3136)
XMLのタグの階層を調べないと最下層かどうかはわかりませんね。 javaのXMLパースのsaxパースでXMLを調べるとタグの階層を知ることが可能です。 参考urlの中のsaxを利用したプログラム中のメソッド public void startElement(String name, AttributeList atts) {} ではタグ毎に呼ばれるので、ここで階層を加算して public void endElement(String namespaceURI,String localName,String qName) {} で階層を減算すればいいのです。 タグと、階層をArrayListにでも保存しておいて public void endDocument(){} でタグと階層を調べれば最下層かどうかはわかります。
補足
SaKaKashiさん ご回答ありがとうございます。 今回使っているのが、JavaのDOMで作成しております。 私の方で最初に表記し忘れてしまいました。申し訳ありません。 SAXが使いたかった・・・・。 DOMのAPIをずっと見ているんですが、どうにもよさそうなのが なさそうなので困っております。 参考URLもガッツリ読ませて頂きます。 ありがとうございます。