Java RSS意外标记,正在xml文件中读取

Java RSS意外标记,正在xml文件中读取,java,android,domdocument,rss-reader,Java,Android,Domdocument,Rss Reader,我正在尝试创建一个RSS阅读器,它读取RSS提要并在列表视图中显示它。我让他与其他RSS源一起工作,但我无法让它与我实际需要的RSS源一起工作。我验证了这个提要,它说它是一个有效的RSS提要,没有错误。我知道问题/解决方案在getDomFromXMLString方法中,它实际上就是从这个方法中提取XML的,但是我不知道如何使它正确地读取它 这是我的主要活动 package com.example.lehi.events; import java.util.ArrayList; import j

我正在尝试创建一个RSS阅读器,它读取RSS提要并在列表视图中显示它。我让他与其他RSS源一起工作,但我无法让它与我实际需要的RSS源一起工作。我验证了这个提要,它说它是一个有效的RSS提要,没有错误。我知道问题/解决方案在getDomFromXMLString方法中,它实际上就是从这个方法中提取XML的,但是我不知道如何使它正确地读取它

这是我的主要活动

package com.example.lehi.events;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {

    String key_items = "item";
    String key_title = "title";
    String key_description = "description";
    String key_link = "link";
    String key_date = "pubDate";
    ListView lstPost = null;
    List<HashMap<String, Object>> post_lists = new ArrayList<HashMap<String, Object>>();
    List<String> lists = new ArrayList<String>();
    ArrayAdapter<String> adapter = null;
    RSSReader rssfeed = new RSSReader();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lstPost = (ListView) findViewById(R.id.lstPosts);
        adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_2, android.R.id.text1, lists) {

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                View view = super.getView(position, convertView, parent);
                TextView txt1 = (TextView) view
                        .findViewById(android.R.id.text1);
                TextView txt2 = (TextView) view
                        .findViewById(android.R.id.text2);
                HashMap<String, Object> data = post_lists.get(position);
                txt1.setText(data.get(key_title).toString());
                txt2.setText(data.get(key_description).toString());
                return view;
            }

        };
        Document xmlFeed;
        xmlFeed = rssfeed.getRSSFromServer("http://calendar.byui.edu/RSSFeeds.aspx?data=hhAbVFpDFO7OxcTcYlM9Lk3inbX%2bJ%2baS3fubTE468TQI91kccS33vQ%3d%3d");
        NodeList nodes = xmlFeed.getElementsByTagName("item");
            for (int i = 0; i < nodes.getLength(); i++) {
                Element item = (Element) nodes.item(i);
                HashMap<String, Object> feed = new HashMap<String, Object>();
                feed.put(key_title, rssfeed.getValue(item, key_title));
                feed.put(key_description, rssfeed.getValue(item, key_description));
                feed.put(key_link, rssfeed.getValue(item, key_link));
                feed.put(key_date, rssfeed.getValue(item, key_date));
                post_lists.add(feed);
                lists.add(feed.get(key_title).toString());
            }
            lstPost.setAdapter(adapter);
    }
}
这是org.xml.sax.SAXParseException:Unexpected-token-position:TEXTï»?@1:4在java.io中。StringReader@19916b6d我想弄清楚

03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ org.xml.sax.SAXParseException: Unexpected token (position:TEXT @1:4 in java.io.StringReader@19916b6d)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:146)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at com.example.lehi.events.RSSReader.getDomFromXMLString(RSSReader.java:58)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at com.example.lehi.events.RSSReader.getRSSFromServer(RSSReader.java:29)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at com.example.lehi.events.MainActivity.onCreate(MainActivity.java:56)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.app.Activity.performCreate(Activity.java:5933)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.app.ActivityThread.access$800(ActivityThread.java:144)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.os.Looper.loop(Looper.java:135)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5221)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372)
03-15 18:29:08.308    3612-3612/com.example.lehi.events W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
03-15 18:29:08.308    3612-3612/com.example.lehi.events W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

如果getDomFromXMLString中存在异常,请尝试打印堆栈跟踪。我猜有一个异常,当前正在被吞并,然后返回的文档是空的


编辑:现在我们看到SAXParseException:意外的标记»。这就是UTF-8字节顺序标记。尝试EntityUtils.ToStringttpEntity,UTF-8,看看这是否有助于它吞下BOM。

看起来“xmlFeed”是空的。你知道为什么这适用于某些RSS源,但不适用于此特定RSS源吗?似乎此源是带有BOM的UTF-8,而其他源可能是简单的ASCII。
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ org.xml.sax.SAXParseException: Unexpected token (position:TEXT @1:4 in java.io.StringReader@19916b6d)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:146)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at com.example.lehi.events.RSSReader.getDomFromXMLString(RSSReader.java:58)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at com.example.lehi.events.RSSReader.getRSSFromServer(RSSReader.java:29)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at com.example.lehi.events.MainActivity.onCreate(MainActivity.java:56)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.app.Activity.performCreate(Activity.java:5933)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.app.ActivityThread.access$800(ActivityThread.java:144)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.os.Looper.loop(Looper.java:135)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5221)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
03-15 18:29:08.307    3612-3612/com.example.lehi.events W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372)
03-15 18:29:08.308    3612-3612/com.example.lehi.events W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
03-15 18:29:08.308    3612-3612/com.example.lehi.events W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)