Android 无法正确获取xml中具有特殊字符的数据
我正在创建一个应用程序,在这个应用程序中,我从服务器获取包含特殊字符的xml,当我在android端解析它时,我得到了包含特殊字符的单个字符串的不同字符串 以下是生成的xml示例:Android 无法正确获取xml中具有特殊字符的数据,android,xml,parsing,android-xmlpullparser,Android,Xml,Parsing,Android Xmlpullparser,我正在创建一个应用程序,在这个应用程序中,我从服务器获取包含特殊字符的xml,当我在android端解析它时,我得到了包含特殊字符的单个字符串的不同字符串 以下是生成的xml示例: <field> <option>Didn't Apply For Card,Do Not Want the Card,No</option> <validation>NA</validation> <field_name>sel
<field>
<option>Didn't Apply For Card,Do Not Want the Card,No</option>
<validation>NA</validation>
<field_name>self_closed</field_name>
</field>
当我解析它而不是获取“未将卡作为整个字符串应用”时,我将其获取为两个不同的字符串“未将卡应用”和“未将卡应用”尝试使用以下代码解析xml:
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser parser = factory.newPullParser();
parser.setInput("xml input stream", null);
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
String tagname = parser.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if (tagname.equalsIgnoreCase("field")) {
}
break;
case XmlPullParser.TEXT:
text = parser.getText();
break;
case XmlPullParser.END_TAG:
if (tagname.equalsIgnoreCase("field")) {
} else if (tagname.equalsIgnoreCase("option")) {
System.out.println(text);
}
break;
default:
break;
}
}
} catch (XmlPullParserException e) {e.printStackTrace();}
catch (IOException e) {e.printStackTrace();}
}
setInputresult,UTF-8;我想这就是将xml提供给解析器的地方。我不知道如何修复它,但如果我是你,我会做以下测试。在将结果交给解析器之前,对结果进行字符串替换。变革&apos;为了第一次测试。但解析器似乎识别出了一个“所以我要做的第二个测试是替换&apos;通过\\',查看html实体。java中有一个类,您也可以使用它。
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser parser = factory.newPullParser();
parser.setInput("xml input stream", null);
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
String tagname = parser.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if (tagname.equalsIgnoreCase("field")) {
}
break;
case XmlPullParser.TEXT:
text = parser.getText();
break;
case XmlPullParser.END_TAG:
if (tagname.equalsIgnoreCase("field")) {
} else if (tagname.equalsIgnoreCase("option")) {
System.out.println(text);
}
break;
default:
break;
}
}
} catch (XmlPullParserException e) {e.printStackTrace();}
catch (IOException e) {e.printStackTrace();}
}