0

これが私のXMLです。

 <results keywords="ipod" limit="25">
   <products count="30">
     <product merchant_price="179.99" 
       network_id="2" 
       name = "ipod" 
       retail_price="179.99" />
     <product merchant_price="189.99" 
       network_id="3"
       name="ipod16gb" 
       retail_price="189.99" />
   </products>
</results>

これから、製品属性のみを取得する必要があります。そのために、私はパーサーを書いています。

String xml = parser.getXmlFromUrl(url); // getting XML from the given URL
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName("product");
// looping through all item nodes 
for (int i = 0; i < 10; i++) {
    Element e = (Element) nl.item(i);
        // adding each child node to HashMap key => value
    Log.v("test",e.getAttribute("name"));
    }

しかし、私は値を適切に取得できず、取得できません NullPointerException 。ここで私が間違っていることを誰かが指摘できますか?

4

3 に答える 3

1

ループは10回実行されていますが、これはxmlに存在するノードよりも多いため、nullポインター例外が発生します。nl.length(リストの長さを返す関数を使用して)作成した要素のリスト内の要素の数を取得してみてくださいdoc.getElementsByTagName("product");.

于 2012-10-04T11:52:55.263 に答える
1

それを試してみてください

     Element e = (Element) nl.item(i);
     NamedNodeMap attributes = e.getAttributes();
            for (int a = 0; a < attributes.getLength(); a++) 
       {
            Node theAttribute = attributes.item(a);
          System.out.println(theAttribute.getNodeName() + "=" + theAttribute.getNodeValue());
        }
于 2012-10-04T11:43:27.357 に答える
0

問題は Xml パーサーにありました。解析中にこれで修正しました。

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI(url));
HttpResponse httpResponse = httpClient.execute(request);
HttpEntity httpEntity = httpResponse.getEntity();
xml = EntityUtils.toString(httpEntity);
于 2012-10-04T13:08:35.673 に答える