2012年1月4日水曜日

JAVAでXMLの読み込み

あけましておめでとうございます。

前回のからかなり時間が空いてしまったのは、筆無精っということで。


今回から数回は、自分が書いたライブラリ的なものを公開していこうと思います。
おそらく、絶対、洗練されたものではないので、指摘をお待ちしております。

とりあえず暫定的なもので進めて、気が向いたらしっかりとまとめ直す予定ですm(_ _)m


JavaのXML例では下みたいなものが多い。
    <root>
        < fruit >りんご</ fruit >
        < fruit >なし</ fruit >
        < fruit >みかん</ fruit >
    </root>

こう言うのではなく、ここに置いておくコードは下のようなもの。
fruit要素の中に各項目がある場合のもの。

    <root>
        <fruit>
            <type>りんご</type> 

            <name>ふじ</name>
            <locality>青森</locality >
            <weight>100</weight>

        </ fruit >
        < fruit >
            <type>なし</type> 
            <name>幸水</name>
            <locality>山梨</locality >
            <weight>120</weight>      
        </ fruit >
        < fruit >
            <type>みかん</type> 
            <name>温州みかん</name>
            <locality>愛媛</locality >
            <weight>30</weight>
        </ fruit >
    </root>

        Document document = DocumentBuilderFactory.newInstance().
                newDocumentBuilder().parse(new File(filePath));

        //指定の要素を抜き出す
        NodeList element = document.getElementsByTagName("kamp");

        for (int i = 0; i < element.getLength(); i++)
        {
            //抜き出した要素の中から順番に、子要素を抜く出す
            NodeList list = element.item(i).getChildNodes();
            for (int j = 0, k = 0; j < list.getLength(); j++)
            {
                //抜き出した子要素の中から順番に取りだし、空白であれば登録しない
                String text = list.item(j).getNodeName();
                if (text.equals("#text") == false)
                {
                    String value = list.item(j).getTextContent().trim();
                    if (text.equals("type"))
                    {
                        System.out.println("種類:" + value);
                    } else if (text.equals("name"))
                    {
                        System.out.println("名前:" + value);
                    } else if (text.equals("locality"))
                    {
                        System.out.println("産地:" + value);
                    } else if (text.equals("weight"))
                    {
                        System.out.println("重さ:" + value);
                    }
                    k++;
                }
            }
        }

以上終わり。

0 件のコメント:

コメントを投稿