Я создаю приложение, в котором я получаю xml с сервера, который содержит специальный символ, когда я разбирал его на стороне android. Я получаю другую строку одной строки, которая содержит специальный символ. . Вот пример генерируется XML:Неправильное получение данных со специальным символом в xml
<field>
<option>Didn't Apply For Card,Do Not Want the Card,No</option>
<validation>NA</validation>
<field_name>self_closed</field_name>
</field>
Вот мой код:
String tagname,value = null,t_name;
t_name=table_name;
XmlPullParserFactory xmlPullParserFactory = null;
XmlPullParser xmlPullParser = null;
//System.out.println("In parse UI table name:"+table_name);
result=input_stream;
try {
xmlPullParserFactory = XmlPullParserFactory.newInstance();
xmlPullParserFactory.setNamespaceAware(true);
xmlPullParser = xmlPullParserFactory.newPullParser();
//System.out.println("Load file :"+result);
xmlPullParser.setInput(result,"UTF-8");
//xmlPullParser.defineEntityReplacementText("&","&");
int eventType = xmlPullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT)
{
tagname=xmlPullParser.getName();
if(eventType==XmlPullParser.START_TAG)
{
}
else if(eventType==XmlPullParser.TEXT)
{
value=xmlPullParser.getText();
if(value.isEmpty())
{
System.out.println("string is empty");
}
value=conversion.add_special_character(value);
System.out.println("value:"+value);
value=value.trim();
System.out.println(" text tag value :"+value);
}
else if(eventType==XmlPullParser.END_TAG)
{
if(tagname.equals("field"))
{
//System.out.println("field"+field+" table name:"+t_name);
dbController.insert_into_fields(field, t_name);
//database.insert_into_fields(field);
field.clear();
}
if(tagname.equals("field_name"))
{
field.put("field_name", value);
}
if(tagname.equals("type"))
{
field.put("input_type", value);
}
if(tagname.equals("label"))
{
field.put("label", value);
}
if(tagname.equals("option"))
{
//System.out.println("in option tag option:"+value);
field.put("option", value);
}
if(tagname.equals("validation"))
{
//System.out.println("In validation tag:"+value);
field.put("validation", value);
}
// System.out.println("Tag_name :"+tagname);
} // end of else end tag
eventType = xmlPullParser.nextToken();
}// end of while loop
dbController.close_database();
} // end of try
catch (Exception e)
{
// TODO: handle exception
e.printStackTrace();
} // end of catch
, когда я анализирую его вместо того, чтобы «не применять для карты» в качестве целой строки я получаю это как две разные строки «Ждут» и t подать заявку на карточку
'xmlPullParser.setInput (результат, "UTF-8");' То есть, где вы даете XML для синтаксического анализатора я полагаю. Я не знаю, как это исправить, но я бы сделал следующие тесты, если бы я был вами. Замените строку на результат, прежде чем передать его парсеру. Измените «'» на «» для первого теста. Но похоже, что парсер распознает «», поэтому второй тест, который я сделал бы, это заменить «'» на «\\». – greenapps
Посмотрите на html-объекты. http://www.w3schools.com/html/html_entities.asp В java есть класс, который вы также можете использовать для него. – greenapps