Я не могу использовать тег JSTL для чтения RSS - PullRequest
1 голос
/ 16 января 2011

Я хочу прочитать RSS из другого Интернета.но я не могу читать rss.Я использую Netbeans и уже добавляю библиотеку JSTL.Я могу использовать тег forEach, но каждый раз, когда я использую тег XML, он показывает ошибку.Это мой код для чтения RSS.Я не знаю, как читать rss с тегом JSTL, пожалуйста, помогите мне.


<!-- Filename: ShowStudents.jsp -->
<%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<HTML>
<BODY>
<c:import var="xmlDoc" url="http://www.manager.co.th/RSS/Home/Breakingnews.xml"/>
<x:parse var="parsedDocument" xml="${xmlDoc}"/>
<table>
<tr>
<th>Title : </th>
<th>Link : </th>
</tr>

<x:forEach select="$parsedDocument/channel/item"> // This code I ever been change to $parsedDocument/rss/channel/ and $parsedDocument/rss/channel/title ,but it show same error. 
<tr>
<td> <x:out select="title" /> </td>
<td> <x:out select="link" /> </td>
</tr>
</x:forEach>
</table>
</BODY>
</HTML>

, когда я запускаю этот код, он показывает ошибку, как это.как читать rss с тегом JSTL, пожалуйста, помогите мне.

description Сервер обнаружил внутреннюю ошибку (), которая помешала ему выполнить этот запрос.

исключение

org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: org.xml.sax.SAXParseException: содержимое не допускается в прологе.org.apache.jasper.servlet.JspServletWrapper.handleJspException (JspServletWrapper.java:527) org.apache.jasper.servlet.Java: 313) org.apache.jasper.servlet.JspServlet.service (JspServlet.java:260) javax.servlet.http.HttpServlet.service (HttpServlet.java:717) Filter.ThaiRequest.doFilter (ThaiRequest)org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter (MonitorFilter.java:393)

первопричина

javax.servlet.ServletException: javax.servlet.jsp.JspException:org.xml.sax.SAXParseException: содержимое не разрешено в прологе.org.apache.jasper.runtime.101) org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:70) javax.servlet.http.HttpServlet.service (HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapperJava: 377) org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service (JspServlet.java:260) javax.servlet.http.ttpserviceHttpServlet.java:717) Filter.ThaiRequest.doFilter (ThaiRequest.java:38) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter (MonitorFilter.java:393)

основная причина

org.xml.sax.SAXParseException: содержимое не разрешено в прологе.com.sun.org.apache.xerces.internal.parsers.DOMParser.parse (DOMParser.java:249) com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse (DocumentBuilderImpl.java:284) орг.apache.taglibs.standard.tag.common.xml.ParseSupport.parseInputSource (ParseSupport.java:227) org.apache.taglibs.standard.tag.common.xml.ParseSupport.parseInputSourceWithFilter) Par.Su.taglibs.standard.tag.common.xml.ParseSupport.parseReaderWithFilter (ParseSupport.java:199) org.apache.taglibs.standard.tag.common.xml.ParseSupport.standard.tag.common.xml.ParseSupport.doEndTag (ParseSupport.java:138) org.apache.jsp.test_jsp._jspx_meth_x_005fparse_005f0 (test_jsp.java:150) org.apache.jsp_sp.erj.jj ()org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:70) javax.servlet.http.HttpServlet.service (HttpServlet.java:717) org.apache.jasper.servlet.JspSerava377)org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service (JspServlet.java:260) javax.servlet.http.HttpServletSservice:717) Filter.ThaiRequest.doFilter (ThaiRequest.java:38) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter (MonitorFilter.java:393)

Обновление:

Теперь я могу читать XML с JDOM в сервлете, но не могу отобразить в файле JSP. Я могу отобразить все данные из XML в сервлете. Я не знаю, как отображать данные из заголовка и тега ссылки только в файле JSP. пожалуйста, помогите мне.

try {

     ReadXMLFile rxml = new ReadXMLFile();
     NodeList nodes = (NodeList) rxml.readXML();
     for (int i = 0; i < nodes.getLength(); i++) {

       /* I can display all data from xml. I want to display data from title and link tag only in JSP file. */
     System.out.println(nodes.item(i).getNodeValue());

        }

1 Ответ

1 голос
/ 16 января 2011

Документ на http://www.manager.co.th/RSS/Home/Breakingnews.xml выглядит так, как будто он начинается с Byte-Order-Mark .

В Java это правильно обрабатывается только тогда, когда анализатор XML читает непосредственно из входного потока. В вашем случае, тем не менее, вы читаете документ в строку, а затем передаете эту строку в тег <x:parse>, и поскольку он читает из строки, он не обрабатывает спецификацию, думает, что это мусор, выдает ошибку «Содержимое запрещено в прологе».

Я не думаю, что это легко исправить в JSP / JSTL. Я думаю, вам нужно либо написать пользовательский тег для анализа документа непосредственно из входного потока, либо использовать структуру MVC для выполнения анализа в сервлете / контроллере и переслать в JSP для отображения данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...