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只存储唯一的值. 我们来看看我们如何在映射文件中实现集合: ...
随机推荐
- 1. Python中的基本数据类型、运算、变量
本文利用的是Python 3.x版本,建议学习3.x版本 Python中的基本数据类型.运算.变量 1. 基本数据类型 1.1 整数 py可以处理任意大小的整数,例如123,1234567891324 ...
- BZOJ 1602 USACO 2008 Oct. 牧场行走
[题解] 要求出树上两点间的距离,树上的边有边权,本来应该是个LCA. 看他数据小,Xjb水过去了...其实也算是LCA吧,一个O(n)的LCA... #include<cstdio> # ...
- 在docker上构建tomcat容器
1.查看docker上的镜像 [root@holly ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.6 73829d7b ...
- webstorm+nodejs环境中安装淘宝镜像
用过nodejs的人都知道,从node的官方模板库下载依赖包的时候,经常会遇到“假死”(页面静止不动)的状态,这种速度简直要逼死焦急地等待下班的人.还好咱们万能的淘宝提供了淘宝镜像这么一个不要更好用的 ...
- C#关键字详解第一节
abstract:抽象类: 他表达对问题或者实际中的事物,对象等所设计出的抽象概念,比如一个灵感.生物等,这些都是抽像, 但是他们往往也有具体的指向,比如生物圈有人类,猴子,老虎等等,老虎和人类是实际 ...
- FineReport实线java报表填报录入的效果图
Java报表-固定资产(增删改) Java报表-集团財务报表 Java报表-简单自由填报 Java报表-客户跟踪数据回填 Java报表-客户关系复杂填报 Java报表-批量导入 Java报表-批量删除 ...
- Libevent 学习笔记 (1)——Libevent 2.0安装与简单演示样例
今天開始学习Libevent . Libevent 是开源社区的一款高性能I/O框架库. 主要特点有: 1 跨平台. 2 统一事件源 3 线程安全 4 基于Reactor 今天主要进行了Libeven ...
- 让devstack中的vm訪问外网
devstack默认会建立一个Public网络,地址为172.24.4.0/24,可是这个网络并非运营商分配给我们的网络.所以仅仅能通过nat的方式让devstack建立的虚拟机訪问外网. br-ex ...
- HDU2899 Strange fuction 【二分】
Strange fuction Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- POJ 3579 Median (二分)
...