我不确定是否有其他人曾经遇到或询问此事,但对于我的应用程序,我使用了两个Yahoo! RSS订阅:热门新闻和天气预报。我刚开始使用这些的想法,但从我读过的内容来看,我只需要对特定的URL发出HTTP GET请求以检索XML文件,我可以解析它以获取我想要的信息。我让解析器工作得很好,因为我用每个feed中的一个示例XML文件测试它;但是,当我使用对URL的AJAX GET调用时发生了一个奇怪的错误:
无法显示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文件本身存在问题的某些行。在大多数情况下,它与逃避“&amp;”有关。符号,但似乎IE告诉我错误是在for循环中。我不是XML专家,但我从来没有在XML中看过for循环。即便如此,我已经直接在我的浏览器中访问了URL并查看了XML文件(它是我用来测试解析的文件)并且没有找到这样的行。另外,我的代码中的任何地方都不存在这样的循环。换句话说,我不确定这是我的错误,还是某些配置设置。这是我正在使用的代码,但是:
// 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
}
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。无论如何,这两个电话简单地返回了网址......
雅虎!预告RSS Feed: http://xml.weather.yahoo.com/forecastrss?p=USOR0186
雅虎!新闻:热门新闻Feed: http://news.yahoo.com/rss/
无论如何,任何帮助都会非常有帮助。
答案 0 :(得分:0)
for (i = 0; i < s.length; i++){
错误位于小于符号,这意味着XML解析器正在读取您的源代码!使用WGET获取资源并检查是否返回了实际的XML而不是源代码。