【问题标题】:Strange Whitespace Error when Accessing RSS Feed访问 RSS 提要时出现奇怪的空白错误
【发布时间】:2011-07-29 20:43:28
【问题描述】:

我不确定之前是否有其他人遇到过或询问过这个问题,但对于我的应用程序,我使用了两个 Yahoo! RSS 源:热门新闻和天气预报。我对首先使用这些的想法很陌生,但是根据我的阅读,我只需要向特定 URL 发出 HTTP GET 请求即可检索 XML 文件,我可以解析该文件以获取我想要的信息.我的解析器工作得很好,因为我使用来自每个提要的示例 XML 文件对其进行了测试;但是,当我使用 AJAX GET 调用 url 时发生了一个奇怪的错误:

无法显示 XML 页面 无法使用 XSL 样式表查看 XML 输入。请更正错误,然后单击“刷新”按钮,或稍后重试。


Whitespace is not allowed at this location. 
Error processing resource 'http://localhost:8080/BBS/fservlet?p=n'. Line 28, P...

    for (i = 0; i < s.length; i++){
-------------------^

请注意,我目前使用 Tomcat 在我的本地系统上部署了这个应用程序“BBS”​​。我调查了这样的空白错误,大多数似乎都指向 XML 文件本身中存在问题的某些行。在大多数情况下,它与转义“&”符号有关,但似乎 IE 告诉我错误在 for 循环内。我不是 XML 专家,但我从未见过 XML 中的 for 循环。即便如此,我还是直接在浏览器中访问了 url 并查看了 XML 文件(它是我用来测试解析的文件),但没有发现这样的行。此外,我的代码中的任何地方都不存在这样的循环。换句话说,我不确定这是我的错误,还是某些配置设置。然而,这是我正在使用的代码:

jQuery 代码

// Located in my JSP file
var baseContext = "<%=request.getContextPath()%>";
$(document).ready(function() {
    ParseWeather();
    ParseNews();
}

// Located in a separate JS file
function ParseWeather() {
    $.get(baseContext + "/servlet?p=w", function(data) {
        // XML Parser
    }
    // Data Manipulation
}

function ParseNews() {
    $.get(baseContext + "/servlet?p=n", function(data) {
        // XML Parser
    }
    // Data Manipulation
}

Java 代码

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.http.HttpServlet;
import java.net.URL;

public class FeedServlet extends HttpServlet {
    protected void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
        try {
            response.setContentType("text/xml");
            final URL url;
            String line = "";

            if(request.getParameter("p").equals("w")) {
                // Configuration setting that returns: "http://xml.weather.yahoo.com/forecastrss?p=USOR0186"
                url = new URL(AppConfiguration.getInstance().getForcastUrl());
            } else {
                // Configuration setting that returns: "http://news.yahoo.com/rss/"
                url = new URL(AppConfiguration.getInstance().getNewsUrl());
            }
            final BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream());
            final PrintWriter writer = response.getWriter();

            while((line = reader.readLine()) != null) {
                writer.println(line);
                writer.flush();
            }
            writer.close();
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

我的公司有一个 AppConfiguration 类,它允许通过配置页面更改某些变量,例如 URL。无论如何,这两个调用简单地返回 url...

雅虎!预测 RSS 提要: http://xml.weather.yahoo.com/forecastrss?p=USOR0186

雅虎!新闻:头条新闻提要: http://news.yahoo.com/rss/

无论如何,任何帮助都会非常有帮助。

【问题讨论】:

  • 看起来对您的 servlet 的请求没有返回与提要相同的数据。雅虎供稿不包含该 JavaScript。

标签: java rss whitespace yahoo feed


【解决方案1】:
for (i = 0; i < s.length; i++){

错误出现在小于号处,这意味着 XML 解析器正在读取您的源代码!使用 WGET 获取资源并检查返回的是实际 XML 而不是源代码。

【讨论】:

    猜你喜欢
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    相关资源
    最近更新 更多