从httpGet解析和显示XML

时间:2014-05-03 19:06:31

标签: java android xml-parsing

希望有人可以帮助我。我有一个我正在做的项目,是的,它是功课,所以我希望这不会伤害我在这里得到答案的机会。我应该编写一个从bbyopen api收集数据的应用程序。 Best Buys web api,它提供有关您所在地区商店的详细信息。我已经从服务器获得了一个我确定包含正确信息的任何方式,因为我已经使用System.out.println()在logcat中显示了它。但是,我想要做的是将此字符串转换为xml文档,解析存储的名称,它的地址,然后在新活动的文本视图中显示它。

以下是我用于解析字符串并将正确数据放入传递给新活动的数组的代码。我确定实际上没有任何内容传递给新活动,我不确定数组是否正在构建。任何帮助将不胜感激。

public void callback(String serviceResult){
        System.out.println(serviceResult);

        try {
            XmlPullParserFactory parserCreator = XmlPullParserFactory.newInstance();
            parserCreator.setNamespaceAware(true);
            XmlPullParser parser = parserCreator.newPullParser();
            parser.setInput(new StringReader(serviceResult));
            int eventType = parser.getEventType();
            while (eventType != parser.END_DOCUMENT){
                String name = "";
                String address = "";
                if ((eventType == XmlPullParser.START_TAG)&& (parser.getName().equals("longName"))){
                    name = parser.getName();
                }
                if ((eventType == XmlPullParser.START_TAG)&& (parser.getName().equals("address"))){
                    address = parser.getName();
                    Store store = new Store(name, address);
                    arrStore.add(store);
                    System.out.println(arrStore);
                }
                else
                    parser.nextTag();

            }

        }  catch (Exception e) {

        }
        Intent intent = new Intent(getApplicationContext(),StoreList.class);
        intent.getStringArrayListExtra(arrStore.toString(), "key");
        startActivity(intent);



    }
然后,我接受了新活动中的意图:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_store_list);
        getIntent();
        ArrayList<String> store = getIntent().getStringArrayListExtra("key");


    }

但是,尝试在ArrayList存储上执行打印行,在新活动中会导致空指针错误。我怀疑是因为数组是空的..?

如果它有帮助,那就是我收到的XML看起来像是一个字符串解析器。

<stores warnings="Distances are in terms of miles (default)" currentPage="1" totalPages="1" from="1" to="4" total="4" queryTime="0.006" totalTime="0.011" >
  <store>
    <longName>Best Buy - Toledo II</longName>
    <address>1405 Spring Meadows Dr</address>
  </store>
  <store>
    <longName>Best Buy - Perrysburg</longName>
    <address>10017 Fremont Pike</address>
  </store>
  <store>
    <longName>Best Buy - Toledo</longName>
    <address>4505 Monroe St</address>
  </store>
  <store>
    <longName>Best Buy Mobile - Franklin Park</longName>
    <address>5001 Monroe Street</address>
  </store>
</stores>

1 个答案:

答案 0 :(得分:0)

错误在于:

Intent intent = new Intent(getApplicationContext(),StoreList.class);
intent.getStringArrayListExtra(arrStore.toString(), "key");
startActivity(intent);

尝试:putStringArrayListExtra()