当前位置:编程学习 > XML/UML >>

JSP中拼装数据为XML出现的问题

一、应用背景
 
JSP取得Servlet中放入request的List,将List中的数据拼装成XML。以下代码在Eclipse的内置浏览器中显示为xml,没有问题。
 
[java] 
/**
 * 新闻Servlet
 * @author 徐越
 *
 */ 
public class ListServlet extends HttpServlet 
 private static final long serialVersionUID = 1L; 
 private VideoNewsService vs = new VideoNewsServiceImpl(); 
 
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
 { 
  doPost(request, response); 
 } 
 
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
 { 
  List<VideoNews> news = vs.readNews(); 
  request.setAttribute("lstnews", news); 
  request.getRequestDispatcher("/WEB-INF/pages/news.jsp").forward(request, response); 
 } 
 
/**
 * 新闻Servlet
 * @author 徐越
 *
 */
public class ListServlet extends HttpServlet
{
 private static final long serialVersionUID = 1L;
 private VideoNewsService vs = new VideoNewsServiceImpl();
 
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
 {
  doPost(request, response);
 }
 
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
 {
  List<VideoNews> news = vs.readNews();
  request.setAttribute("lstnews", news);
  request.getRequestDispatcher("/WEB-INF/pages/news.jsp").forward(request, response);
 }
}
[html]
<%@ page language="java" contentType="text/xml; charset=utf-8" pageEncoding="utf-8"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<?xml version="1.0" encoding="UTF-8"?> 
<videoNews> 
 <c:forEach items="${lstnews}" var="n"> 
  <news id="${n.id }"> 
   <title>${n.title }</title> 
   <length>${n.timeLength }</length> 
  </news> 
 </c:forEach> 
</videoNews> 
 
<%@ page language="java" contentType="text/xml; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<?xml version="1.0" encoding="UTF-8"?>
<videoNews>
 <c:forEach items="${lstnews}" var="n">
  <news id="${n.id }">
   <title>${n.title }</title>
   <length>${n.timeLength }</length>
  </news>
 </c:forEach>
</videoNews>
 
二、发现问题
 
火狐中报错:XML解析错误:XML 或文本声明不在实体的开头
 
chrome报错:XML declaration allowed only at the start of the document
 
根据错误信息,可以知道XML声明<?xml version="1.0" encoding="UTF-8"?>必须在文档的开头。
 
 
 
 
三、解决问题
 
将page、taglib、xml同时放在第一行即可,一个接一个的后面。虽然不好看,但是解决问题哦
补充:Web开发 , Jsp ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,