XML、集合、JSP综合练习
一、利用DOM解析XML文件得到信息;存入泛型集合中在JSP页面循环打印读取的信息
a) 编写XML文件;添加测试节点数据
b) 建立web项目;在JSP页面中使用DOM解析XML技术得到XML中的新闻信息
c) 创建实体类news;对新闻实体类进行封装;使用新闻实体类对新闻数据进行封装
d) 创建新闻类泛型集合存储每条新闻信息
e) 在页面利用循环和显示标签展示数据
效果:
XML文件:

展示效果:

编写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>
创建实体类news;对新闻实体类进行封装;使用新闻实体类对新闻数据进行封装
package entity; /**
* 新闻类
* @author Administrator
*
*/
public class News { private String id;//新闻ID
private String title;//标题
private String type;//新闻类型
private String date;//发布时间
private String author;//作者 public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
} }
用泛型集合从页面输出效果
<%@ 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、集合、JSP综合练习的更多相关文章
- web.xml中JSP配置及 EL表达式
web.xml 中JSP配置.servlet配置 及 EL表达式 [摘要] servlet 基本配置 <servlet> <servlet-name>LoginServlet& ...
- MyEclipse 关闭拼写检查、JavaScript的检查Build、xml、JSP的Bulid检查
前言 MyEclipse 的拼写检查.JavaScript的检查Build.xml.JSP的Bulid检查很讨厌,有时不仅会一直build卡住,而且明明是对的它却报错,示例: 关闭方法 1.关闭拼写检 ...
- MyEclipse导入主题文件epf后xml及jsp等页面中点击标签之后显示灰白
MyEclipse导入主题文件epf后xml及jsp等页面中点击标签之后显示灰白,症状例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVVAxOT ...
- 集合的综合练习:Poker牌
/* 刘意教程示例:*/ package cn.onecool.cot; import java.util.ArrayList; import java.util.Collections; impor ...
- Java基础---Java---基础加强---内省的简单运用、注解的定义与反射调用、 自定义注解及其应用、泛型及泛型的高级应用、泛型集合的综合
内省的简单运用: JavaBean是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则. 采用遍历BeanInfo的所有属性方式来查找和 ...
- 【转载】Hibernate之hbm.xml集合映射的使用(Set集合映射,list集合映射,Map集合映射)
https://www.cnblogs.com/biehongli/p/6555994.html
- Java List集合和Map集合的综合应用
public static void main(String[] args) { //--------------------------------------------------------- ...
- 解析转换json xml 集合 ado
json提取 string str = "[{\"JUDGE_RESULT\":\"B类\",\"JUDGE_RESULT\":\ ...
- 集合映射Set(使用xml文件)
如果持久类具有Set对象,可以在映射文件中使用set元素映射Set集合. set元素不需要索引元素. List和Set之间的区别是: Set只存储唯一的值. 我们来看看我们如何在映射文件中实现集合: ...
随机推荐
- vim学习2-文档编辑
一.vim重复命令 1.重复执行上次命令 在普通模式下.(小数点)表示重复上一次的命令操作 拷贝测试文件到本地目录 $ cp /etc/protocols . 打开文件进行编辑 $ vim proto ...
- 【Codeforces 478C】Table Decorations
[链接] 我是链接,点我呀:) [题意] 给你r,g,b三种颜色的气球 每张桌子要放3个气球 但是3个气球的颜色不能全都一样 (允许两个一样,或者全都不一样) 问你最多能装饰多少张桌子 [题解] 先把 ...
- php ip伪装访问
打算做个采集,无记录下来备用 php的curl搞定ip伪装来采集内容.以前写过一段代码采集一个数据来处理.由于数据量过大,同一ip采集.经常被限制,或者列为黑名单. 写了段代码伪装ip,原理是,客 ...
- nyoj_114_某种序列_201403161700
某种序列 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 数列A满足An = An-1 + An-2 + An-3, n >= 3 编写程序,给定A0, A1 ...
- 从事分布式系统,计算,hadoop
作者:廖君链接:https://www.zhihu.com/question/19868791/answer/88873783来源:知乎 分布式系统(Distributed System)资料 < ...
- 零基础学python-4.2 其它内建类型
这一章节我们来聊聊其它内建类型 1.类型type 在python2.2的时候,type是通过字符串实现的,再后来才把类型和类统一 我们再次使用上一章节的图片来说明一些问题 我们通过对照上面的图片.在p ...
- [E2E] Visual Differing Tests with Puppeteer and PixelMatch
Take your end to end tests to the next level by comparing your current application's view with an al ...
- hdu1285 拓扑排序+优先队列
原题地址 这算是我个人AC的第一个拓扑排序题目吧. 题目解读 给出几组比赛的胜负情况.推断最后的排名.依据题意这就是一个明显的拓扑排序问题了. 注意 假设由于可能的排名有多种情况,这时要保证编号小的在 ...
- MySql存储过程与函数
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来运行 ...
- HibernateBaseDAO
HibernateBaseDAO接口 package com.iotek.homework.dao; import java.io.Serializable; import java.util.Lis ...