>
http://www.hellohiro.com/xmldom.htm
>このページではDOMの環境構築の話から書いてあります
(ぱ)さんの指定したリンク先を元にプログラムを作成してみました。
下は、xmlファイルです。
<?xml version="1.0" encoding="Shift_JIS" ?>
<site>
<title>JavaでHello World</title>
<element id="28">
<pretest id="28">
<title>EJB編</title>
<file>ejb.htm</file>
</pretest>
<pretest>
<title>DOM編</title>
<file>xmldom.htm</file>
</pretest>
</element>
<element1 id="28">
<pretest id="28">
<title>neko</title>
<file>neko.htm</file>
</pretest>
<pretest>
<title>DOMneko編</title>
<file>xmldomneko.htm</file>
</pretest>
</element1>
</site>
僕のプログラム
public class A {
public static void main(String[] args) {
try {
// ドキュメントビルダーファクトリを生成
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
// ドキュメントビルダーを生成
DocumentBuilder builder = dbfactory.newDocumentBuilder();
// パースを実行してDocumentオブジェクトを取得
Document doc = builder.parse(new File("site.xml"));
// ルート要素を取得(タグ名:site)
Element root = doc.getDocumentElement();
System.out.println("ルート要素のタグ名:" + root.getTagName());
System.out.println("***** ページリスト *****");
// element要素のリストを取得
NodeList elementlist = root.getElementsByTagName("element");
// pretest要素のリストを取得
NodeList pretestlist = root.getElementsByTagName("pretest");
// pretest要素の数だけループ
for (int i=0; i < pretestlist.getLength() ; i++) {
// page要素を取得
Element element = (Element)pretestlist.item(i);
// title要素のリストを取得
NodeList titleList = element.getElementsByTagName("title");
// title要素を取得
Element titleElement = (Element)titleList.item(0);
// title要素の最初の子ノード(テキストノード)の値を取得
String title = titleElement.getFirstChild().getNodeValue();
// file要素のリストを取得
NodeList fileList = element.getElementsByTagName("file");
// file要素を取得
Element fileElement = (Element)fileList.item(0);
// file要素の最初の子ノード(テキストノード)の値を取得
String file = fileElement.getFirstChild().getNodeValue();
System.out.println("タイトル:" + title + " " +
"ファイル:" + file);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
というように作成してみました。
そうすると実行結果が、
タイトル:EJB編 ファイル:ejb.htm
タイトル:DOM編 ファイル:xmldom.htm
タイトル:neko ファイル:neko.htm
タイトル:DOMneko編 ファイル:nekoxmldom.htm
となりました。私としては、elementの下にあるpretestのみを取得したいのですが
詰まり実行結果としては、
タイトル:EJB編 ファイル:ejb.htm
タイトル:DOM編 ファイル:xmldom.htm
となります。このように「この親(element)のこの子(pretest)」
という指定はできるのでしょうか?今の状態だと全てのpretestの要素を取得している
ので何とかしたいのですが・・どうぞ宜しくお願いします。
長々と申し訳ありません・・