android xml解析

 

    public String func(String string, String name, String country) {
        if (TextUtils.isEmpty(string) || TextUtils.isEmpty(name)) {
            return Constant.EMPTY_STRING;
        }
        String curCountry = country;
        if (TextUtils.isEmpty(country)) {
            curCountry = "en";
        }
        String result = Constant.EMPTY_STRING;
        ByteArrayInputStream inputStream = null;
        try {
            XmlPullParserFactory pullParserFactory = XmlPullParserFactory.newInstance();
            XmlPullParser parser = pullParserFactory.newPullParser();
            inputStream = new ByteArrayInputStream(string.getBytes(StandardCharsets.UTF_8));
            parser.setInput(inputStream, null);

            int eventType = parser.getEventType();
            while (eventType != XmlPullParser.END_DOCUMENT) {
                switch (eventType) {
                    case XmlPullParser.START_TAG:
                        String tagName = parser.getName();
                        if (!STRING_NODE.equals(tagName)) {
                            break;
                        }
                        String nameVal = parser.getAttributeValue(null, "name");
                        String countryVal = parser.getAttributeValue(null, "lang");
                        if (!nameVal.equals(name) || !countryVal.equals(curCountry)) {
                            break;
                        }
                        // 对于没有属性的标签,直接用nextText获取其文字
                        result = parser.nextText();
//                        int eventType2 = parser.next();  // 这两句等于上面一句
//                        result = parser.getText();
                        return result;
                    case XmlPullParser.END_TAG: // 终止标签</XXX>
                        break;
                    default:
                        break;
                }
                eventType = parser.next();
            }
        } catch (XmlPullParserException | IOException e) {
            Log.w(TAG, "parse " + string + " failed");
        } finally {
            closeSilently(inputStream);
        }
        return result;
    }

 

posted @ 2022-09-14 15:58  SaraMorning  阅读(40)  评论(0编辑  收藏  举报