org.apache.harmony.xml.ExpatParser$ParseException: в строке 292, столбец 0: нежелательная после элемента документа
Я новичок в разборе XML, мне нужно взять URL-каналы и проанализировать их, а затем сохранить их в локальной базе данных. Если я передаю какую-то другую ссылку, она принимает, но если я передаю нужную ссылку, выдает эту ошибку. Я также предоставляю свою часть кода и вывод команды cat вместе с этим. Может кто-нибудь сказать мне, с какой проблемой я сталкиваюсь?
Ниже приводится 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)
1 ответ
Ошибка "мусор после элемента документа" возникает там, где есть какой-либо нежелательный тег в теге XML после корневого элемента. просто удаляет все те теги, которые есть после тега корневого элемента. В моем случае была повторная запись элемента XML в строке с номером 292 в файле XML. Я очистил это, и теперь я думаю, что это будет работать для меня.