0

Android側で解析したときに特殊文字を含むサーバーからxmlを取得するアプリケーションを作成しています。特殊文字を含む単一文字列の異なる文字列を取得します。生成されたxmlの例を次に示します。

<field>
<option>Didn&apos;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("&#38;","&");
        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

「カードに適用されませんでした」を文字列全体として取得する代わりに解析すると、「didn」と「カードに適用されない」という2つの異なる文字列として取得されます

4

1 に答える 1