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;
}