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只存储唯一的值. 我们来看看我们如何在映射文件中实现集合: ...
随机推荐
- 【模板】dijkstra
洛谷 4779 #include<cstdio> #include<cstring> #include<algorithm> #include<queue&g ...
- HTML5 重力感应效果,实现摇一摇效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- BZOJ1193 马步距离 (贪心)
恶心的题目= = #include <cstdio> #include <cmath> #include <algorithm> ][]={{,,,,},{,,,, ...
- G - Power Strings
Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc&quo ...
- 百度地图API位置偏移的校准算法
转自极客人原文 百度地图API位置偏移的校准算法 在开始使用百度地图API进行开发时可能会遇到一件相当奇怪的事情,使用百度定位的经纬度在地图上显示相当不准确,这一问题我在微信开发和安卓开始时都遇到过. ...
- Clojure:从Java调用Clojure
我们要在Java中调用Clojure有两种方法,一种是将Clojure代码生成class文件,另外一种是通过Clojure RT方式直接在java程序中调用Clojure代码.两种方式各有优缺点, 第 ...
- ustc 1117
无根树同构 有两种方法,一种是确定其中一棵树,另一棵树枚举根节点. 一种是,利用拓扑排序,先确定其中一棵树.另一棵树,若拓扑后剩两个节点,则枚举这两个节点为根结点,否则,只需做一次.注意,无根树节点入 ...
- 重学C++ (十一) OOP面向对象编程(2)
转换与继承 本节主要须要区分的是: 基类和派生类的转换: 引用(指针)的转换和对象的转换. 1.每一个派生类对象包括一个基类部分.因此.能够像使用基类对象一样在派生类对象上执行操作. 基于这一点,能够 ...
- 创建hive整合hbase的表总结
[Author]: kwu 创建hive整合hbase的表总结.例如以下两种方式: 1.创建hive表的同步创建hbase的表 CREATE TABLE stage.hbase_news_compan ...
- 菜鸟学Java(二十二)——又一次认识泛型
泛型是Java SE 1.5的新特性,泛型的本质是參数化类型,也就是说所操作的数据类型被指定为一个參数.这样的參数类型能够用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法. Java语言 ...