1

XMLを初めて使用します。XMLからデータを読み取りたいのですが、次の形式のXMLファイルがあります。

<country>
<coordinates>
    <x-y>
        <x>150</x>
        <y>160</y>
        <cities>
            <city>Mumbai</city>
            <photos>
                <image>
                    <url>Mumbai 1</url>
                    <description>
                        <english>this 1</english>
                        <arabic>this arabic 1</arabic>
                    </description>
                </image>
                <image>
                    <url>Mumbai 2</url>
                    <description>
                        <english>this 2</english>
                        <arabic>this arabic 2</arabic>
                    </description>
                </image>
                <image>
                    <url>Mumbai 3</url>
                    <description>
                        <english>this 3</english>
                        <arabic>this arabic 3</arabic>
                    </description>
                </image>
                <image>
                    <url>Mumbai 4</url>
                    <description>
                        <english>this 4</english>
                        <arabic>this arabic 4</arabic>
                    </description>
                </image>
            </photos>
        </cities>
    </x-y>
    <x-y>
        <x>155</x>
        <y>165</y>
        <cities>
            <city>Delhi</city>
            <photos>
                <image>
                    <url>Delhi 1</url>
                    <description>
                        <english>this 1</english>
                        <arabic>this arabic 1</arabic>
                    </description>
                </image>
                <image>
                    <url>Delhi 2</url>
                    <description>
                        <english>this 2</english>
                        <arabic>this arabic 2</arabic>
                    </description>
                </image>
                <image>
                    <url>Delhi 3</url>
                    <description>
                        <english>this 3</english>
                        <arabic>this arabic 3</arabic>
                    </description>
                </image>
                <image>
                    <url>Delhi 4</url>
                    <description>
                        <english>this 4</english>
                        <arabic>this arabic 4</arabic>
                    </description>
                </image>
            </photos>
        </cities>
    </x-y>
    <x-y>
        <x>160</x>
        <y>175</y>
        <cities>
            <city>Jammu</city>
            <photos>
                <image>
                    <url>Jammu 1</url>
                    <description>
                        <english>this 1</english>
                        <arabic>this arabic 1</arabic>
                    </description>
                </image>
                <image>
                    <url>Jammu 2</url>
                    <description>
                        <english>this 2</english>
                        <arabic>this arabic 2</arabic>
                    </description>
                </image>
                <image>
                    <url>Jammu 3</url>
                    <description>
                        <english>this 3</english>
                        <arabic>this arabic 3</arabic>
                    </description>
                </image>

            </photos>
        </cities>
    </x-y>
</coordinates>

次のコードを使用して都市名を読み取ることができます:

    public static Boolean getCityList(InputStream inputstream) {
    try {
        Log.e("getCityList", "Comming");
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = null;
        try {
            db = dbf.newDocumentBuilder();
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Document doc = null;
        try {
            doc = db.parse(new InputSource(inputstream));
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        doc.getDocumentElement().normalize();

        NodeList nodeList = doc.getElementsByTagName("cities");

        if (nodeList.getLength() > 0) {
            Cities.initilize();
            for (int i = 0; i < nodeList.getLength(); i++) {

                Node node = nodeList.item(i);
                Element fstElmnt = (Element) node;
                NodeList nameList = fstElmnt.getElementsByTagName("city");
                Element nameElement = (Element) nameList.item(0);
                nameList = nameElement.getChildNodes();
                Log.e("City Name : ", ""+ ((Node) nameList.item(0)).getNodeValue().toString());
                Cities cities = new Cities(((Node) nameList.item(0)).getNodeValue().toString());
                Cities.sCityList.add(cities);
                }
            }
            return true;
        }
        return false;

    } catch (ClientProtocolException e) {
        return false;
    } catch (IOException e) {
        return false;
    }
} 

上記のコードは、リストから都市を読み取ります。今、私は画像からURLを読み、この関数でのみその説明を読みたいと思っています。私を助けてください。

4

2 に答える 2

1

SimpleXMLを使用することをお勧めします。これは、Android用の軽量の解析ライブラリであり、XMLデータを非常に簡単に解析できます。

于 2013-02-05T08:39:42.137 に答える
1

タグの子である<image>ため、親ノードとしてを選択する必要があります。このような<url><image>

NodeList nodeList = doc.getElementsByTagName("image");

    if (nodeList.getLength() > 0) {
        Cities.initilize();
            Node node = nodeList.item(0);
            Element fstElmnt = (Element) node;
            NodeList nameList = fstElmnt.getElementsByTagName("url");
            // Store it in your city's arraylist

        }

お役に立てれば

于 2013-02-05T08:45:07.143 に答える