0

XML 解析は初めてです。URL フィードを取得して解析し、ローカル データベースに保存する必要があります。他のリンクを渡すと受け入れますが、必要なリンクを渡すとこのエラーが発生します。これに加えて、コード部分とログの猫の出力も提供しています。私が直面している問題の種類を教えてもらえますか?

以下は、解析する必要がある URL です。

private static final String POSTS_URL = "http://bgr.in/feed/iphoneapp";

これは、エラーが生成されるメソッドです:-

public static void updateStories(Context context, String url, int type) {
    if (StoryService.isConnected(context)) {
        HttpGet request = new HttpGet(url);
        request.addHeader("accepts", "application/rss+xml");
        HttpClient client = new DefaultHttpClient();

        HttpResponse response = null;
        try {
            response = client.execute(request);
        } catch (IOException e) {
            Log.e(TAG, "Failed to get rss feed.", e);
        }

        RootElement root = new RootElement("rss");

        List<BaseStory> stories = Story.appendArrayListener(type, 
                root.getChild("channel"), 0);

        try {
            Xml.parse(response.getEntity().getContent(), Xml.Encoding.UTF_8, root.getContentHandler());
        } catch (Exception e) {
            e.printStackTrace();
            Log.i(TAG, "Failed to parse " + url, e);
        }`public static void updateStories(Context context, String url, int type) {
    if (StoryService.isConnected(context)) {
        HttpGet request = new HttpGet(url);
        request.addHeader("accepts", "application/rss+xml");
        HttpClient client = new DefaultHttpClient();

        HttpResponse response = null;
        try {
            response = client.execute(request);
        } catch (IOException e) {
            Log.e(TAG, "Failed to get rss feed.", e);
        }

        RootElement root = new RootElement("rss");

        List<BaseStory> stories = Story.appendArrayListener(type, 
                root.getChild("channel"), 0);

        try {
            Xml.parse(response.getEntity().getContent(), Xml.Encoding.UTF_8, root.getContentHandler());
        } catch (Exception e) {
            e.printStackTrace();
            Log.i(TAG, "Failed to parse " + url, e);
        }

Log Cat の出力は次のとおりです。

System.err(19251):  org.apache.harmony.xml.ExpatParser$ParseException: At line 292,column 0: junk after document element
System.err(19251):  at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:515)
System.err(19251):  at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:474)
System.err(19251):  at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:316)
System.err(19251):  at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:279)
System.err(19251):  at android.util.Xml.parse(Xml.java:84)
System.err(19251):  at in.bgr.service.StoryService.updateStories(StoryService.java:122)
System.err(19251):  at in.bgr.service.StoryService.updateStories(StoryService.java:96)
System.err(19251):  at in.bgr.ui.AllStoriesFragment$LoadStoriesTask.doInBackground(AllStoriesFragment.java:309)
System.err(19251):  at in.bgr.ui.AllStoriesFragment$LoadStoriesTask.doInBackground(AllStoriesFragment.java:1)
System.err(19251):  at android.os.AsyncTask$2.call(AsyncTask.java:288)
System.err(19251):  at java.util.concurrent.FutureTask.run(FutureTask.java:237)
System.err(19251):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
System.err(19251):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
4

1 に答える 1

1

「ドキュメント要素の後にジャンク」エラーは、ルート要素タグの後に xml に不要なタグがある場合に発生します。ルート要素タグの後にあるすべてのタグを削除するだけです。私の場合、XML ファイルの 292 行目に XML 要素の繰り返しエントリがありました。私はそれをクリアしましたが、今ではうまくいくと思います。

于 2014-06-18T09:22:51.843 に答える