知识大全 用Java实现基于XML的购物车
Posted 商品
篇首语:勇气是控制恐惧心理,而不是心里毫无恐惧。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用Java实现基于XML的购物车相关的知识,希望对你有一定的参考价值。
用Java实现基于XML的购物车 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
购物车是电子商务网站中不可缺少的组成部分 但目前大多数购物车只能作为一个顾客选中商品的展示 客户端无法将购物车里的内容提取出来满足自己事务处理的需要 而这一点在有些电子商务活动中很有必要 XML的出现使得网络上传输的数据变得有意义起来 我们可以根据不同的要求以不同的样式将一个购物车的内容显示出来
本文将详细分析一个由Java实现的基于XML的购物车 下面是一个包含了五件商品的购物车的XML内在结构 它的根元素为cart total元素表示购物车内的总金额 每个item元素表示一件商品 item里的子元素分别标明了该商品的具体信息 可根据实际情况添加 修改或删除
在这里 需要建立一个表示购物车的类 XMLCart java 它是一个JavaBean 所以它包含了一个空的构造函数 这个类包含了购物车的一些基本功能 生成一个空的购物车 往购物车里添加商品 删除购物车里的商品 改变购物车内商品的数量以及清空购物车等 它拥有一个全局私有变量 private XMLDocument myCart myCart用来存储购物车里的详细内容 购物车的基本功能就是对它的操作 它的类型是XMLDocument 即一个XML文档 这样 对购物车的操作就转换成对myCart中的子元素的添加 删除 及元素值的计算 修改等
清空购物车
清空购物车即生成一个空的购物车 这里空购物车是一个含有根元素cart及其元素total的XML文档 total元素是购物车的总金额 它的初始值为 其XML具体形式如下
< ?xml version= encoding= gb ?>
< cart>
< total> < /total>
< /cart>
将这个XML字符串由parseString函数转换成XMLDocument存入myCart
其代码如下
public void emptyCart() throws IOException SAXException
String stringCart= < ?xml version= encoding= gb ?> +
< cart>< total> < /total>< /cart> ;
myCart=parseString(stringCart)
添加商品
添加商品 即将传入的item元素添加到根元素cart里 其中item里包括商品详细信息 同时计算total的值 其代码如下
public void addItemToCart(String stringItem)
throws IOException SAXException
//将item由String转换为XMLDocument
XMLDocument itemAdded=parseString(stringItem)
//取出item节点 并复制它
NodeList itemList=itemAdded getElementsByTagName( item )
Node item=em( )
Node cloneItem=item cloneNode(true)
//如果购物车为空 则构造一个新的购物车
if(isCartEmpty())
myCart emptyCart()
//如果该商品不在购物车中 则插入该商品 并计算总金额
if(!isItemExist(item myCart))
//取myCart的根元素 并将复制的item节点添加到后面
Element cartRoot=myCart getDocumentElement()
Node cartNode=cartRoot appendChild(cloneItem)
puteTotal() //计算总金额
删除商品
删除商品 即根据商品代码将该商品的item元素 从myCart的根元素cart中删除 并重新计算total的值
public void moveItemFromCart(String id)
//取出以item为单位的节点集cartList以及根元素cartRoot
NodeList cartList=myCart getElementsByTagName( item )
Element cartRoot=myCart getDocumentElement()
//在cartList中查找代码为选中id的商品
for(int x= ;x< cartList getLength() x++)
Node itemNode=em(x)
String idValue=itemNode getFirstChild()
getFirstChild() getNodeValue()
//如果找到 则从cartRoot中删除该节点 并跳出循环
if(idValue equals(id))
itemNode=cartRoot removeChild(itemNode)
break;
puteTotal() //计算总金额
改变商品数量
根据客户在页面上所填的数量 修改myCart中quantity 并重新计算total:
public void addQuantityToCart(String qnty) throws
IOException SAXException
//将传过来的包含商品数量的一组XML字符串转换为XML文档
XMLDocument quantityChanged=parseString(qnty)
//取出包含新数量的quantity节点集和myCart中的quantity节点集
NodeList quantityList=quantityChanged getElementsByTagName( quantity )
NodeList cartList=myCart getElementsByTagName( quantity )
//循环改变商品的数量
for(int x= ;x< cartList getLength() x++)
//将新quantity的值赋给myCart中相应的quantity中去
String quantity=em(x) getFirstChild() getNodeValue()
em(x) getFirstChild() setNodeValue(quantity)
puteTotal() //计算总金额
计算总金额
即计算total的值 其中total=∑(price*quantity)
public void puteTotal()
NodeList quantityList=myCart getElementsByTagName( quantity )
NodeList priceList=myCart getElementsByTagName( price )
float total= ;
//累加总金额
for(int x= ;x< priceList getLength() x++)
float quantity=Float parseFloat(em(x) getFirstChild() getNodeValue())
float price=Float parseFloat(em(x) getFirstChild() getNodeValue())
total=total+quantity*price;
//将total附给myCart的total
String totalString=String valueOf(total)
myCart getElementsByTagName( total )
item( ) getFirstChild() setNodeValue(totalString)
判断购物车是否为空
通常在添加新商品时 还需要知道购物车是否为空 如果为空的话 则要生成一个新的购物车
public boolean isCartEmpty()
//item的节点集 如果该节点集包含的节点数为 则购物车内没有商品 返回true
NodeList itemList=myCart getElementsByTagName( item )
if(itemList getLength()== ) return true;
else return false;
判断所选商品是否已在购物车内
即判断新传来商品的item是否已在myCart中存在 如果存在 返回true
public boolean isItemExist(Node item XMLDocument cart)
NodeList itemList=cart getElementsByTagName( item )
Node id=item getFirstChild()
String idValue=id getFirstChild() getNodeValue()
if(itemList getLength()!= )
for(int x= ;x< itemList getLength() x++)
Node itemTemp = em(x)
Node idTemp=itemTemp getFirstChild()
String idTempValue=idTemp getFirstChild() getNodeValue()
if(idValue equals(idTempValue)) return true;
return false;
return false;
cha138/Article/program/Java/hx/201311/26148
相关参考
用JDOM完成Java更新XML文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文详细介绍
用JAXB实现JAVA对象与XML文件的绑定 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 用J
构建基于Web/XML的信息集成研究 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 摘要在当前的
基于ASP.NET与XML的网络硬盘开发 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 引言
ASP.NET基于XML导航栏的制作 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 首先说明本文
C#中使用XML---基于DOM的案例分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 编写此
C#中使用XML基于DOM的案例分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 编写此案例的
知识大全 Struts中如何基于validation.xml来启用客户端验证
Struts中如何基于validation.xml来启用客户端验证? 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快
java解析XML和java解析HTML 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一dom
java使用JDOM解析xml文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!java中如何使用