JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--JSP技术--JSP实例  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
基于事件驱动的解析接口 SAX (实例三)
作者:     文章来源:
访问次数:227次     加入时间:2007年02月11日
实例三、计算 订单 的 总价格(如何取出正文的值)。
问题:请计算 orders.xml 所示的总价格

orders.xml 的源文件。


<订单>
<商品 数量="21">
<名称>袜子
<单价>3.24

<商品 数量="1">
<名称>贝斯
<单价>4200.00

<商品 数量="5">
<名称>域名
<单价>60.50

<商品 数量="2">
<名称>书
<单价>99.00




下面的代码使用了 SUN 的 JAXP 包,请在 http://java.sun.com/xml/download.html 下载。
在 Jbuilder4 中运行正确。

import org.xml.sax.*;
import javax.xml.parsers.*;
import java.util.Vector;

/**
* Title: XML Study, Sample 3
* Description: Count the Order Sum.
* Copyright: Copyright (c) 2001
* Company: Isolation Land.
* @author Slepworm
* @version 1.0
*/

public class CountSum extends org.xml.sax.helpers.DefaultHandler {

private double totalPrice = 0.00;
private StringBuffer content = new StringBuffer();
private Vector numberV = new Vector();
private Vector priceV = new Vector();
private double totalSum = 0.00;

public CountSum() {
}

public static void main(String[] args) throws Exception {
CountSum cs = new CountSum();
cs.createParser();
}
public void createParser() throws Exception{
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setValidating(false);
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
xr.setContentHandler(this);
xr.parse("http://localhost/orders.xml");
}

// 取得 商品 中属性 数量 的值,并将它放入数组 numberV 中。
public void startElement(String namespaceURI, String localName, String rawName, Attributes atts) throws SAXException {
if (rawName.equals("商品")) {
String number = atts.getValue("数量");
numberV.addElement(number);
//System.out.println(numberV);
}
content.setLength(0);
}

// **** 此方法将遍历 XML 文件,获取 文本 值。
public void characters(char[] ch, int start, int length) throws SAXException {
content.append(ch, start, length);
//System.out.println(content.toString()); // 打印出来,看看此方法是怎样运行的
}

// **** 仅获取元素 单价 中的文本,并将它放入数组 priceV 中。
public void endElement(String uri, String localName, String qName) throws SAXException {
if (localName.equals("单价")) {
String price = content.toString();
priceV.addElement(price);
//System.out.println(priceV);
}
}

// 计算总价格
public void endDocument() throws SAXException {
int num;
double pr;
for (int i=0; inum = Integer.valueOf(numberV.get(i).toString()).intValue();
pr = new Double(priceV.get(i).toString()).doubleValue();
totalSum += pr*num;
}
System.out.println("订单的总价格是 " + totalSum);
}
}

输出结果:
订单的总价格是 4768.54



JSP虚拟主机 | JSP空间 | JSP主机 | JSP双线虚拟主机 | JAVA空间 | JAVA虚拟主机 | 虚拟服务器 | JSP 虚拟服务器 | VPS
Virtual Private Server | JAVA虚拟服务器 | VM服务器 | VHOST | 虚拟操作系统 | JSP论坛 | JAVA论坛 | JSP站点论坛
Copyright © 2002-2005 JSPCN.net. All rights reserved.
JSP中文网    备案序号:蜀ICP备05001583号
成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号