【发布时间】: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