如何使用 Jsoup 加载自定义 XML 提要?

How to load custom XML feed with Jsoup?

我有一个 Java 方法,它获取提要文档(通过 http)然后解析提要(不是 JSON 或 XML 类型)。 这是方法:

public ArrayList<ArrayList<String>> getFeed(String type)
{
    String feed = "";
    String address = "";
    Document file;

    /**
     * FEED URLs-------\/
     */
    switch (type) {
        case "news":
            address = "https://[domain]/svc/feeds/news/6001?subtree=false&imagesize=medium-square";
            break;
        case "events":
            address = "http://[domain]/svc/feeds/events/6001?subtree=true&imagesize=medium-square&from=%5bfromDate%5d&to=%5btoDate";
    }
    try {
        HttpURLConnection connection = (HttpURLConnection) (new URL(address)).openConnection();
        //TODO: @Test
        //----------------------------\/--THIS ONE WILL CAUSE ERRORS!!
        file = (Document)connection.getContent();
        connection.disconnect();

        //OUTPUT
        feed = file.getElementsByAttribute("pre").text();
        stream = new StringReader(feed);
    } catch (Exception e) {}

    //BEGIN PARSING\//--THEN OUTPUT//\
    try {
        return parse();
    } catch (FeedParseException e) {}
    //de-fault
    return null;
}

没用;说那个对象:'file' 导致了 NullPointerException。 那么我该如何提高调试在我看来是非开源的东西的精度。

P.S.: 我没有测试 "events" 案例,所以不要担心那里的 GET 参数。


这是我的堆栈跟踪:

不过我看不出它有什么帮助...

您可以直接将 URL 对象传递给 Jsoup。

而不是:

HttpURLConnection connection = (HttpURLConnection) (new URL(address)).openConnection();
//TODO: @Test
//----------------------------\/--THIS ONE WILL CAUSE ERRORS!!
file = (Document)connection.getContent();
connection.disconnect();

file = Jsoup //
          .connect(address) //
          .timeout( 10 * 1000) //
          .ignoreContentType(true) //
          .get();

Jsoup 1.8.3