[英]How to parse XML string with XmlPullParser in Java?
I have this xml: 我有这个xml:
<xml><result>-1</result></xml>
and following java code: 以及以下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;
}
But xpp.getName()
returns null instead of "result"
. 但是
xpp.getName()
返回null而不是"result"
。 As result NullPointerException
is throwed. 结果,抛出
NullPointerException
。
Where am I wrong? 我哪里错了?
Change your code like this. 像这样更改您的代码。
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();
}
XmlPullParser doc XmlPullParser文档
Of course you need to check some more conditions like what if there is no text or tag consist another nested tag... 当然,您需要检查更多条件,例如如果没有文本或标签包含另一个嵌套标签,该怎么办...
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) {
final int event = xpp.getEventType();
if (event == XmlPullParser.START_TAG && xpp.getName().equals(elem)) {
xpp.next();
return xpp.getText();
}
xpp.next();
}
} catch (XmlPullParserException | IOException e) {
e.printStackTrace();
}
return null;
}
and this 和这个
if (event == XmlPullParser.START_TAG && xpp.getName().equals(elem)) {
xpp.next();
if (xpp.getEventType() == XmlPullParser.TEXT) {
return xpp.getText();
}
}else{
xpp.next();
}
would work for something nested like 适用于嵌套的东西
"<xml><result><noway><result>-1</result></noway></result></xml>"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.