在Android中有没有解析XML字符串的捷径
我浏览了许多网站,但没有找到任何关于解析xml的简单示例或答案 事实上,网站上充满了例子和答案,但这些都是如此冗长和复杂。 请回答我一个解析XML字符串并获取其元素的简单方法。谢谢。试试这个在Android中有没有解析XML字符串的捷径,android,xml,xml-parsing,Android,Xml,Xml Parsing,我浏览了许多网站,但没有找到任何关于解析xml的简单示例或答案 事实上,网站上充满了例子和答案,但这些都是如此冗长和复杂。 请回答我一个解析XML字符串并获取其元素的简单方法。谢谢。试试这个 public void parseXml(){ try { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true);
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解析解决方案通常有多糟糕。你可以试试,免责声明:我是作者。谢谢你每次回答这个问题都对我有帮助。