【问题标题】:how to parse list of xml data from url in spinner android studio如何在 spinner android studio 中解析来自 url 的 xml 数据列表
【发布时间】:2018-12-02 04:54:53
【问题描述】:

我想在微调器中解析 xml 数据,我已经为数据创建了一个 getter 和 setter,这是我从 URL 获取的 xml 数据,

<response>
<result>
    <foods>
        <food>
            <id>01</id>
            <name>Pizza</name>
            <price>20</price>
        </food>
    </foods>
</result>
</response>

如何在微调器中解析 XML 数据列表?

【问题讨论】:

    标签: android xml xml-parsing spinner


    【解决方案1】:

    首先,为食物创建一个POJO类:

       public class Food {
         public String id, name, price;
       }
    
    
      private void parseXML(String urlResponse) {
            XmlPullParserFactory parserFactory;
            try {
                parserFactory = XmlPullParserFactory.newInstance();
                XmlPullParser parser = parserFactory.newPullParser();
                InputStream is = new ByteArrayInputStream(urlResponse.getBytes());
                parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
                parser.setInput(is, null);
    
                processParsing(parser);
    
            } catch (XmlPullParserException e) {
    
            } catch (IOException e) {
            }
        }
    
    
        private void processParsing(XmlPullParser parser) throws IOException, XmlPullParserException{
            ArrayList<Food> foods = new ArrayList<>();
            int eventType = parser.getEventType();
            Food currentFood = null;
    
            while (eventType != XmlPullParser.END_DOCUMENT) {
                String eltName = null;
    
                switch (eventType) {
                    case XmlPullParser.START_TAG:
                        eltName = parser.getName();
    
                        if ("food".equals(eltName)) {
                            currentFood = new Food();
                            foods.add(currentFood);
                        } else if (currentFood != null) {
                            if ("name".equals(eltName)) {
                                currentFood.name = parser.nextText();
                            } else if ("id".equals(eltName)) {
                                currentFood.id = parser.nextText();
                            } else if ("price".equals(eltName)) {
                                currentFood.price = parser.nextText();
                            }
                        }
                        break;
                }
    
                eventType = parser.next();
            }
    
            printFoods(foods);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-05
      • 2014-01-19
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多