-1

ここで簡単な質問です。この種のxmlで戻り値を取得するにはどうすればよいですか

 Art C. Cauyao<$@FBID@$>501912568<$@ENDFBID@$>Tessa Rose 
Brainard<$@FBID@$>510831686<$@ENDFBID@$>
Dan Gangan<$@FBID@$>513545777<$@ENDFBID@$>
C Jhec DawAko<$@FBID@$>523059320<$@ENDFBID@$>Jeremy 

Facebookの名前とFacebook IDを取得していることを確認してください。それについて何か方法はありますか?

編集

私はそれがxmlではなくJSONであることがわかりました(申し訳ありません)今、私の質問は本当にその戻り値をどのように組み込むことができるでしょうか?

EDIT SECOND サー これは私がやっていることです これを通してそれを解析しています

static final String URL_FBFRIEND ="Some URL"+ "getFBFriends.php"; 

これを使用して、入力値を使用してデータを解析できるようになりました。ここにコードがあります

        XMLparser parser2 = new XMLparser(); 
    parser2.getXmlFromUrl(URL_FBFRIEND); 

      //HTTP POST
      String url_Getmembermob= URL_FBFRIEND ;
      String xml_getMembermob=null;
      try {
      HttpClient httpclient = new DefaultHttpClient();
      HttpPost httppost = new HttpPost(url_Getmembermob);

      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4); 
      nameValuePairs.add(new BasicNameValuePair("...", "...."));
      nameValuePairs.add(new BasicNameValuePair("fbID", modGen.facebookID ));
      nameValuePairs.add(new BasicNameValuePair("accToken", modGen.tokenID));
      nameValuePairs.add(new BasicNameValuePair("reqType", "0"));

      Log.i("nameValuePairs", "nameValuePairs=" + nameValuePairs);

        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse httpResponse = httpclient.execute(httppost);

        HttpEntity httpEntity = httpResponse.getEntity();

        xml_getMembermob = EntityUtils.toString(httpEntity);

        Log.i("xml-return",""+ xml_getMembermob);

    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace(); 
    }catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

返された xml Log.i("xml-return",""+ xml_getMembermob);をログに記録していることを確認してください。そして、それが出力です

サー・アイブはあなたのコードを変更しました` public static List parseUserList(String userData) { List ret = new ArrayList();

    int index = 0;
    while (index < userData.length())
    {
        int startFbTag = userData.indexOf(FB_NAME, index);
        if (index == -1)
        {

            return ret;
        }
        String name = userData.substring(index, startFbTag - index);
        startFbTag += FB_NAME.length(); // Start of the actual data
        int endFbTag = userData.indexOf(FB_ID, startFbTag);
        if (endFbTag == -1)
        {
            throw new IllegalArgumentException("Unterminated start tag");
        }

        fbTagValue = userData.substring(startFbTag, endFbTag - startFbTag);
        Log.i("UserName",fbTagValue);
        //fbId = Long.parseLong(fbTagValue);
        //ret.add(new User(name, fbId));
        index = endFbTag + FB_ID.length();
    }
    return ret;
}

ここでエラーが発生します ** fbTagValue = userData.substring(startFbTag, endFbTag - startFbTag);** 問題と思われるもの

4

1 に答える 1

0

これはかなり恐ろしいフォーマットです。XMLではありません。JSONではありません。すでに何らかのUserクラスがあり、すべてのデータが1つStringになっているとすると、次のように記述できます(完全にテストされていません)。

private static final String FB_START = "<$@FBID@$>";
private static final String FB_END = "<$@ENDFBID@$>";

public static List<User> parseUserList(String userData)
{
    List<User> ret = new ArrayList<User>();

    int index = 0;
    while (index < userData.length())
    {
        int startFbTag = userData.indexOf(FB_START, index);
        if (index == -1)
        {
            // No tags left. You should check whether you've actually got
            // some data left, and potentially throw an exception. It's not
            // clear what your data format does here.
            return ret;
        }
        String name = userData.substring(index, startFbTag - index);
        startFbTag += FB_START.length(); // Start of the actual data
        int endFbTag = userData.indexOf(FB_END, startFbTag);
        if (endFbTag == -1)
        {
            throw new IllegalArgumentException("Unterminated start tag");
        }

        String fbTagValue = userData.substring(startFbTag, endFbTag - startFbTag);
        long fbId = Long.parseLong(fbTagValue);
        ret.add(new User(name, fbId));
        index = endFbTag + FB_END.length();
    }
    return ret;
}
于 2012-09-08T08:26:32.193 に答える