我有这个xml:
<xml><result>-1</result></xml>
以及以下Java代码:
public String findElement(String xml, String elem) {
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput( new StringReader (xml) );
while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
if (xpp.getName().equals(elem)) {
return xpp.getText();
}
xpp.next();
}
} catch (XmlPullParserException | IOException e) {
e.printStackTrace();
}
return null;
}
但是
xpp.getName()
返回null而不是"result"
。结果,抛出了NullPointerException
。我哪里错了?
最佳答案
像这样更改您的代码。
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
if (xpp.getName().equals(elem)) {
eventType = xpp.next(); // advance to inner text
return xpp.getText();
}
}
eventType = xpp.next();
}