JSP解析XML数据

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="javax.xml.parsers.DocumentBuilderFactory"%>
<%@page import="javax.xml.parsers.DocumentBuilder"%>
<%@page import="org.w3c.dom.Document"%>
<%@page import="org.w3c.dom.NodeList"%>
<%@page import="org.w3c.dom.Node"%>
<%@page import="entity.News"%>
<%@page import="org.w3c.dom.Element"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>解析显示新闻</title>
	
  </head>
  
  <body>
    <%
    	//建立dom解析器工厂实例
    	DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    	
    	//得到解析器对象 
    	DocumentBuilder db = dbf.newDocumentBuilder();

	//得到web工程根目录
    	System.out.print(request.getRealPath("/"));
    	//加载XML文件;创建docuemnt对象(生成dom树)
    	Document dom = db.parse(request.getRealPath("/")+"/new.xml");
    	
    	//开始解析新闻
    	NodeList nodelist = dom.getElementsByTagName("new");
    	
    	//创建泛型集合存储解析的新闻信息
    	List<News> newslist = new ArrayList<News>();
    	
    	//循环解析
    	for(int i = 0; i < nodelist.getLength(); i++){
    		
    		//得到每个node(节点)对象
    		Node newnode = nodelist.item(i);
    		
    		//将节点对象转换为元素对象
    		Element element = (Element)newnode;
    		
    		//得到新闻的id属性
    		String newid = element.getAttribute("id");
    		
    		//创建新闻对象
    		News news = new News();
    		
    		//将id存储在新闻对象中
    		news.setId(newid);
    		
    		//获取其他节点属性
    		for(Node news_child = newnode.getFirstChild(); news_child != null;news_child = news_child.getNextSibling()){
    			
    			//判断当前是元素对象还是节点对象 
    			if(news_child.getNodeType() == Node.ELEMENT_NODE){
    				
    				if(news_child.getNodeName().equals("title")){
	    				//获取新闻标题;将标题封装到对象中
	    				news.setTitle(news_child.getFirstChild().getNodeValue());
    				}
    				if(news_child.getNodeName().equals("type")){
	    				//获取新闻类型;将标题封装到对象中
	    				news.setType(news_child.getFirstChild().getNodeValue());
    				}
    				if(news_child.getNodeName().equals("date")){
	    				//获取新闻发布时间;将标题封装到对象中
	    				news.setDate(news_child.getFirstChild().getNodeValue());
    				}
    				if(news_child.getNodeName().equals("author")){
	    				//获取新闻作者;将标题封装到对象中
	    				news.setAuthor(news_child.getFirstChild().getNodeValue());
    				}
    				
    			}
    		}
    		//将新闻对象放入泛型集合中
			newslist.add(news);
    	}
    %>
    
    <center>
    	<table style="width: 800px; height: auto; border:1px solid #900;font-size: 12px" cellpadding="0" cellspacing="0">
    		<tr style="text-align: center;background: #900; color: #ffffff;border: 1px solid #900">
    			<td>新闻ID</td>
    			<td>新闻标题</td>
    			<td>新闻类型</td>
    			<td>发布时间</td>
    			<td>发布作者</td>
    		</tr>
    		<%
    			//循环新闻列表
    			for(int i = 0; i < newslist.size(); i ++){
    				//取出集合中每个新闻实体对象
    				News news = newslist.get(i);
    		%>
    		<tr>
    			<td style="text-align: center;border: 1px solid #900;height:30px"><%=news.getId() %></td>
    			<td style="text-align: center;border: 1px solid #900;height:30px"><%=news.getTitle() %></td>
    			<td style="text-align: center;border: 1px solid #900;height:30px"><%=news.getType() %></td>
    			<td style="text-align: center;border: 1px solid #900;height:30px"><%=news.getDate() %></td>
    			<td style="text-align: center;border: 1px solid #900;height:30px"><%=news.getAuthor() %></td>
    		</tr>
    		<%
    			}
    		%>
    	</table>
    </center>
  </body>
</html>


XML数据

<?xml version="1.0" encoding="UTF-8"?>
<news>
		<new id="1">
			<title>戴关于依法治国论述摘编发行会见缅甸客人</title>
			<type>时政要闻</type>
			<date>2015-04-27 17:40</date>
			<author>小编</author>
		</new>
		<new id="2">
			<title>戴关于依法治国论述摘编发行会见缅甸客人</title>
			<type>时政要闻</type>
			<date>2015-04-27 17:40</date>
			<author>小编</author>
		</new>
		<new id="3">
			<title>戴关于依法治国论述摘编发行会见缅甸客人</title>
			<type>时政要闻</type>
			<date>2015-04-27 17:40</date>
			<author>小编</author>
		</new>
		<new id="4">
			<title>戴关于依法治国论述摘编发行会见缅甸客人</title>
			<type>时政要闻</type>
			<date>2015-04-27 17:40</date>
			<author>小编</author>
		</new>
		<new id="5">
			<title>习关于依法治国论述摘编发行会见缅甸客人</title>
			<type>时政要闻</type>
			<date>2015-04-27 17:40</date>
			<author>小编</author>
		</new>
		<new id="6">
			<title>习关于依法治国论述摘编发行会见缅甸客人</title>
			<type>时政要闻</type>
			<date>2015-04-27 17:40</date>
			<author>小编</author>
		</new>
		<new id="7">
			<title>习关于依法治国论述摘编发行会见缅甸客人</title>
			<type>时政要闻</type>
			<date>2015-04-27 17:40</date>
			<author>小编</author>
		</new>
		<new id="8">
			<title>习关于依法治国论述摘编发行会见缅甸客人</title>
			<type>时政要闻</type>
			<date>2015-04-27 17:40</date>
			<author>小编</author>
		</new>
		<new id="9">
			<title>习关于依法治国论述摘编发行会见缅甸客人</title>
			<type>时政要闻</type>
			<date>2015-04-27 17:40</date>
			<author>小编</author>
		</new>
		<new id="10">
			<title>习关于依法治国论述摘编发行会见缅甸客人</title>
			<type>时政要闻</type>
			<date>2015-04-27 17:40</date>
			<author>小编</author>
		</new>
		<new id="11">
			<title>习关于依法治国论述摘编发行会见缅甸客人</title>
			<type>时政要闻</type>
			<date>2015-04-27 17:40</date>
			<author>小编</author>
		</new>
</news>

  

posted on 2015-05-11 21:41  msl毛圣林  阅读(543)  评论(0编辑  收藏  举报

导航