K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[145] Re:難しいです。。
投稿者:神奈川
2007/02/20 02:13:25

>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の要素を取得している ので何とかしたいのですが・・どうぞ宜しくお願いします。 長々と申し訳ありません・・
[この投稿を含むスレッドを表示] [この投稿を削除]