K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>>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の要素を取得している >ので何とかしたいのですが・・どうぞ宜しくお願いします。 > >長々と申し訳ありません・・ >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!