在Android中有没有解析XML字符串的捷径

在Android中有没有解析XML字符串的捷径,android,xml,xml-parsing,Android,Xml,Xml Parsing,我浏览了许多网站,但没有找到任何关于解析xml的简单示例或答案 事实上,网站上充满了例子和答案,但这些都是如此冗长和复杂。 请回答我一个解析XML字符串并获取其元素的简单方法。谢谢。试试这个 public void parseXml(){ try { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true);

我浏览了许多网站,但没有找到任何关于解析xml的简单示例或答案

事实上,网站上充满了例子和答案,但这些都是如此冗长和复杂。 请回答我一个解析XML字符串并获取其元素的简单方法。谢谢。

试试这个

 public void parseXml(){
    try {

        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);
        XmlPullParser xpp = factory.newPullParser();

        xpp.setInput( new StringReader( "<foo>Hello World!</foo>" ) ); // pass input whatever xml you have
        int eventType = xpp.getEventType();
        while (eventType != XmlPullParser.END_DOCUMENT) {
            if(eventType == XmlPullParser.START_DOCUMENT) {
                Log.d(TAG,"Start document");
            } else if(eventType == XmlPullParser.START_TAG) {
                Log.d(TAG,"Start tag "+xpp.getName());
            } else if(eventType == XmlPullParser.END_TAG) {
                Log.d(TAG,"End tag "+xpp.getName());
            } else if(eventType == XmlPullParser.TEXT) {
                Log.d(TAG,"Text "+xpp.getText()); // here you get the text from xml
            }
            eventType = xpp.next();
        }
        Log.d(TAG,"End document");

    } catch (XmlPullParserException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

您可以使用XMLPullParser轻松解析xml。下面是处理程序类-

public class XmlPullParserHandler {

    String text;
    StringBuilder builder = new StringBuilder();

    public String parse(InputStream is) {

        try {

            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            factory.setNamespaceAware(true);
            XmlPullParser parser = factory.newPullParser();

            parser.setInput(is, null);

            int eventType = parser.getEventType();

            while (eventType != XmlPullParser.END_DOCUMENT) {
                String tagname = parser.getName();
                switch (eventType) {

                    case XmlPullParser.TEXT:
                        text = parser.getText();
                        break;

                    case XmlPullParser.END_TAG:
                        if (tagname.equalsIgnoreCase("YOUR_TAG1")) {
                            builder.append("TAG1 = " + text);
                        } else if (tagname.equalsIgnoreCase("YOUR_TAG2")) {
                            builder.append("\nTAG2 = " + text);
                        }
                        break;

                    default:
                        break;
                }
                eventType = parser.next();
            }

        } catch (IOException e) {
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        }

        return builder.toString();
    }


}
要解析从WebService获取并读入Inputstream的XML响应,可以执行以下操作-

XmlPullParserHandler parser = new XmlPullParserHandler();
InputStream is = "YOUR XML RESPONSE";
String xmlOutput = parser.parse(is);

xmlOutput是一个包含所有解析xml值的字符串。

请不要参考您的网站Pull和SAX非常简单,因为XML文件确实具有复杂性。问题如此广泛,因为Android中解析XML的方法在各个方面都非常复杂和可怕——建议直接使用STaX的选项非常脆弱,并且容易出错。因此,问题不在于问题的广泛性——问题在于Android上的XML解析解决方案通常有多糟糕。你可以试试,免责声明:我是作者。谢谢你每次回答这个问题都对我有帮助。