| 网站首页 | 文章中心 | 电子书下载 | 矢量图库 | 视频教程 | 素材下载 | 程序代码下载 | JS代码 | 论坛 | 
龙腾教程网  
常用软件类:
|杀毒安全 |联络聊天 |网络软件 |多媒体类 |系统工具 |图形图像 |系统工具 |应用软件 |行业软件
开发设计类:
|动画制作 |图像处理 |3D设计 |操作系统 |站长学院 |网络相关 |WEB设计 |数据库类 |程序开发
 
  您当前位置:您现在的位置: 龙腾软件教程网 >> 文章中心 >> WEB设计 >> XML >> XML进阶技巧 >> 文章正文>>>>>> 
基于XML的购物车的实现
 购物车是电子商务网站中不可缺少的组成部分,但目前大多数购物车只能作为一个顾客选中商品的展示,客户端无法将购物车里的内容提取出来满足自己事务处理的需要,而这一点在有些电子商务活动中很有必要。XML的出现使得网络上传输的数据变得有意义起来,我们可以根据不同的要求以不同的样式将一个购物车的内容显示出来。 
  本文将详细分析一个由Java实现的基于XML的购物车。下面是一个包含了五件商品的购物车的XML内在结构:它的根元素为cart,total元素表示购物车内的总金额,每个item元素表示一件商品,item里的子元素分别标明了该商品的具体信息,可根据实际情况添加、修改或删除。 
  在这里,需要建立一个表示购物车的类:XMLCart.java,它是一个JavaBean,所以它包含了一个空的构造函数。这个类包含了购物车的一些基本功能: 生成一个空的购物车,往购物车里添加商品,删除购物车里的商品,改变购物车内商品的数量以及清空购物车等。它拥有一个全局私有变量“private XMLDocument myCart”,myCart用来存储购物车里的详细内容,购物车的基本功能就是对它的操作,它的类型是XMLDocument,即一个XML文档。这样,对购物车的操作就转换成对myCart中的子元素的添加、删除,及元素值的计算、修改等。 
  1. 清空购物车 
  清空购物车即生成一个空的购物车。这里空购物车是一个含有根元素cart及其元素total的XML文档,total元素是购物车的总金额,它的初始值为0,其XML具体形式如下: 
  < ?xml version=‘1.0’ encoding=‘gb2312’?>
< cart>
< total>0< /total>
< /cart>
  将这个XML字符串由parseString函数转换成XMLDocument存入myCart。
  其代码如下:
public void emptyCart() throws IOException,SAXException{
   String stringCart=“< ?xml version=‘1.0’encoding=‘gb2312’?> ”+
    “< cart>< total>0< /total>< /cart>”;
    myCart=parseString(stringCart);
   }
  2. 添加商品
  添加商品,即将传入的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=itemList.item(0);
Node cloneItem=item.cloneNode(true);
//如果购物车为空,则构造一个新的购物车
if(isCartEmpty()){
   myCart.emptyCart();
}
//如果该商品不在购物车中,则插入该商品,并计算总金额
if(!isItemExist(item,myCart)){
//取myCart的根元素,并将复制的item节点添加到后面
Element cartRoot=myCart.getDocumentElement();
Node cartNode=cartRoot.appendChild(cloneItem);    
computeTotal();  //计算总金额
     }
   } 
  3. 删除商品
  删除商品,即根据商品代码将该商品的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=0;x < cartList.getLength();x++){
    Node itemNode=cartList.item(x);
    String idValue=itemNode.getFirstChild().
    getFirstChild().getNodeValue();
    //如果找到,则从cartRoot中删除该节点,并跳出循环
if(idValue.equals(id)){
    itemNode=cartRoot.removeChild(itemNode);
    break;
       }
     }
     computeTotal();  //计算总金额
   } 
  4. 改变商品数量
  根据客户在页面上所填的数量,修改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=0;x< cartList.getLength();x++){
//将新quantity的值赋给myCart中相应的quantity中去
String quantity=quantityList.item(x).getFirstChild().getNodeValue();
cartList.item(x).getFirstChild().setNodeValue(quantity);
}
computeTotal();  //计算总金额
   } 
  5. 计算总金额
  即计算total的值,其中total=∑(price*quantity):
public void computeTotal(){
   NodeList quantityList=myCart.getElementsByTagName( “quantity”);
   NodeList priceList=myCart.getElementsByTagName( “price”);
   float total=0;
   //累加总金额
for(int x=0;x< priceList.getLength();x++){
   float quantity=Float.parseFloat(quantityList.item(x)
   .getFirstChild().getNodeValue());
  float price=Float.parseFloat(priceList.item(x).getFirstChild().getNodeValue());
   total=total+quantity*price;
   }
   //将total附给myCart的total
String totalString=String.valueOf(total);
   myCart.getElementsByTagName( “total”).
   item(0).getFirstChild().setNodeValue(totalString);
  } 
  6. 判断购物车是否为空
  通常在添加新商品时,还需要知道购物车是否为空, 如果为空的话,则要生成一个新的购物车。
public boolean isCartEmpty(){
//item的节点集,如果该节点集包含的节点数为0,则购物车内没有商品,返回true
NodeList itemList=myCart.getElementsByTagName(“item”);
if(itemList.getLength()==0) return true;
else return false;
}
  7. 判断所选商品是否已在购物车内
  即判断新传来商品的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()!=0){
      for(int x=0;x < itemList.getLength();x++){
      Node itemTemp = itemList.item(x);
      7Node idTemp=itemTemp.getFirstChild();
      String idTempValue=idTemp.getFirstChild().getNodeValue();
       if(idValue.equals(idTempValue)) return true;
       }
      return false;
     }
    return false;
   } 
  除上述方法外,XMLCart还包括将XML字符串由输入时的String转换成XMLDocument的方法parseString,以及用于输出时将XSL赋给myCart并返回String型XML字串的 cartTurnToStringWithXSL方法来辅助购物车主要操作的实现,这里不再赘述。
上一篇:
  • 上一篇文章:
  • 下一篇
  • 下一篇文章: 没有了
  • 收藏此文到百度搜藏 百度搜藏| 新浪VIvi| 365key| Younote| 博采中心| 你好BLOG| 亿友网摘| 和讯网摘|
    相关文章    
    javascript+xml实现分页技巧
    使用xmldom在服务器端生成静态html页面
    建立一个 XML 的开发环境
    XML数据库几个容易混淆的概念
    XML基础教程
    将改变我们生活的这些XML应用之一
    XML轻松学习手册
    XML数据库探讨
    XML语法概述
    XML入门问答
     
     
     
    最新文章
    普通文章 基于XML的购物车的实现最新文章
    普通文章 javascript+xml实现分页技巧最新文章
    普通文章 三种级别的DB2数据库字符集的设置最新文章
    普通文章 eMule电驴代理服务器作用讲解最新文章
    普通文章 删除Windows XP SP2中的无线设备最新文章
    普通文章 网页中加入透明Flash的方法和技巧最新文章
    普通文章 使用xmldom在服务器端生成静态ht最新文章
    普通文章 建立一个 XML 的开发环境最新文章
    普通文章 Win Vista电源及混合睡眠模式配置最新文章
    普通文章 3dsmax 打造逼真的游戏法器模型最新文章
     
    热门文章
    推荐文章 CorelDraw 表格制作终极方案
    推荐文章 Photoshop鼠绘水墨风格的精美荷花
    推荐文章 Fireworks网页界面综合设计实例详
    推荐文章 Oracle数据库配置中的常见错误代
     
     
    设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 

    版权所有2006-2008 龙腾教程网