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>

  

时间: 2024-10-10 08:34:19

JSP解析XML数据的相关文章

IOS开发使用NSXMLParser、GDataXML两种方式解析XML数据

概括:XML数据解析方式有 *IOS原生的NSXMLParser,只支持SAX方式解析,使用简单 *C语言的libxml2,同时支持DOM和SAX方式解析 *google的GDataXML,只支持DOM方式解析,基于libxml2,使用时需要将编译环境配置为非ARC,并添加libxml2.dylib动态库 GDataXMLDocument 1 使用GDataXML的DOM方式解析XML,需要导入#import "GDataXMLNode.h" /** *  DOM方式解析XML数据 *

iOS解析XML数据

iOS中解析XML数据的类是  NSXMLParser,详细使用方法如下: 假设现在在内存中有XML的二进制数据对象(NSData):data(该数据可能来自网络,也可能是本地的文件数据),设置NSXMLParser对象的协议,代码如下: NSXMLParser *xmlParse = [[NSXMLParser alloc] initWithData:data]; [xmlParse setDelegate:self]; [xmlParse parse];// 解析开始 解析对象设置后,我们需

Android系列之网络(四)----SAX方式解析XML数据

?[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4044170.html 联系方式:[email protected] [系列]Android系列之网络:(持续更新) Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据) Android系列之网络(二)----HTTP请求头与响应头 Androi

【iOS开发-网络】两种常用的方法解析XML数据

解析XML数据常用的有两种方法 第一种 使用Google的GDataXMLNode解析XML数据 使用的是DOM方式解析 先把xml一口吞掉 然后一点一点的解析 第二种 使用苹果自带的NSXMLParser解析XML数据 使用的是SAX方式解析 一个标记一个标记的解析 第一种使用步骤 第一步 首先把GDataXML文件夹放入项目中 第二步 更改Bulid Setting里面的东西 更改头文件搜索路径 在Header Search Paths里面添加路径/usr/include/libxml2 在

网络相关系列之四:数据解析之SAX方式解析XML数据

一.XML和Json数据的引入: 通常情况下.每一个须要訪问网络的应用程序都会有一个自己的server.我们能够向server提交数据,也能够从server获取数据.只是这个时候就有一个问题,这些数据是以什么格式在网络上传输的呢?一般我们都会在网络上传输一些格式化后的数据,这样的数据会有一定的结构规格和语言,当还有一方收到数据消息后就能够依照同样的结构规格进行解析.从而取出它想要的那部分内容. 在网络上数据传输最经常使用的格式:XML和Json.本文就来学习一下XML数据的解析,Json格式的数

160928、JQuery解析XML数据的demo

用JavaScript解析XML数据是常见的编程任务,JavaScript能做的,JQuery当然也能做.下面我们来总结几个使用JQuery解析XML的例子. 方案1 当后台返回的数据类型是xml对象,如下: 那么,前端jquery解析: 就会得到"成功!"这个文字信息. 方案2 当你要解析一个xml文件对象时候,如xmlfile.xml: $.get("xmlfile.xml",function(xml){ $(xml).find("item"

java解析xml数据(使用jaxp的方式)

解析xml主要有两种方式,一种是dom方式,一种是sax的方式. 1.dom方式是将xml数据作为一个对象生成一个树状结构放入内存中, (1)优点:方便对xml中的数据进行增删改,是W3C推荐的处理xml数据的方式 (2)缺点:这种方式不利于读取比较大的xml文件,容易造成内存溢出. 2.sax方式是采用事件驱动,边读边解析,从上往下,一行一行的解析的方式进行操作 (1)优点:在处理比较大的xml文件时不会造成内存溢出的情况 (2)缺点:不能实现增删改的操作,不是官网标准,但是几乎所有的xml解

微信公众号开发之解析xml数据包

在上次开发的基础上(链接在这里:https://www.cnblogs.com/segho/p/11654719.html) 我们来对用户发送过来的消息进行解析: 需要用到dom4j.jar,自行百度下载资源 我们将xml文件解析文map键值对, 将其直观的反映在console控制台上 WxService中的parseRequest方法代码如下: 1 public static Map<String, String> parseRequest(InputStream is) { 2 Map&l

解析XML数据

在Java程序中读取XML文件的过程称为解析XML 1.解析XML文件的方式1)DOM解析(java官方提供)2)SAX解析(java官方提供)3) JDOM解析(第三方提供)4) DOM4J解析(第三方提供) 2.DOM解析XML的步骤1)创建一个DocumentBuilderFactory的对象2)创建一个DocumentBuilder对象3)通过DocumentBuilder的parse(..)方法得到Document对象4)通过getElementsByTagNam...)方法获取到节点