0

全て大丈夫。インターネットから xml を取得し、ドキュメントを解析していますが、ノード () から値を取得しようとしているときと、1 つのノード間で値を取得しようとしているとき (非常に曇っています)。

private void parseWeather(Document srcDoc) throws Exception {

        for (int a = 0; a < srcDoc.getElementsByTagName("record").getLength(); a++){
            Node recordNode = srcDoc.getElementsByTagName("record").item(a);
            Node temperatureNode = srcDoc.getElementsByTagName("temperature").item(a);
            Node windNode = srcDoc.getElementsByTagName("wind").item(a);
            Node bioNode = srcDoc.getElementsByTagName("bio").item(a);

            RECORD = recordNode.getAttributes().getNamedItem("date").getNodeValue().toString();
            TEMPERATURE = temperatureNode.getAttributes().getNamedItem("min").getNodeValue().toString();
            WIND = windNode.getAttributes().getNamedItem("speed").getNodeValue().toString();
            BIO = bioNode.getAttributes().getNamedItem("value").getNodeValue().toString();
            Element element= (Element) srcDoc.getElementsByTagName("record").item(a);
            NodeList status = element.getElementsByTagName("status");
            NodeList text = element.getElementsByTagName("text");

            Node statusNode = status.item(0);
            Node textNode = text.item(0);
            String statusText = statusNode.getFirstChild().getNodeValue();
            String textText = textNode.getFirstChild().getNodeValue();



            Log.e("Values", "STatus is " + statusText + " and text is " + textText);

        }

    }

これはxmlファイルです

<root>
<forecast>
     <record date="24-10-2012">
<temperature max="17" min="3" unit="°C" />
<wind speed="2 až 5" direction="SV" unit="m/s" />
<bio value="2" />
<status symbol="3">Fair</status>
<text>Very fair today.</text>
<warnings />
     </record>
     <record date="25-10-2012">
<temperature max="16" min="2" unit="°C" />
<wind speed="2 až 5" direction="Juhozápadný" unit="m/s" />
<bio value="3" />
<status symbol="3">Cloudy</status>
<text>Very cloudy tommorow. </text>
<warnings />
      </record>
<record date="25-10-2012">
<temperature max="16" min="2" unit="°C" />
<wind speed="2 až 5" direction="Juhozápadný" unit="m/s" />
<bio value="3" />
<status symbol="3">Cloudy</status>
<text>Very cloudy tommorow. </text>
<warnings />
      </record>

レコード、温度、巻き上げのバイオの出力を取得しますが、ステータスとテキストの出力は取得しません。そして、このループは1つだけを行います。誰でも私を助けることができますか?

4

2 に答える 2

0

status と text はノード リストではなく、単なるノードであるため、子はありません。それらをノードとして取得し、status.getNodeValue()代わりに使用してみてください。

于 2012-10-24T18:14:41.790 に答える
0

私は解決策を見つけましたhttp://androidcodesnips.blogspot.sk/2011/05/dom-parsing-example.html

そんなに簡単に見えない

于 2012-10-24T21:05:46.810 に答える