基于XML的购物车的实现

2016-02-19 21:15 28 1 收藏

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享基于XML的购物车的实现,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

【 tulaoshi.com - Web开发 】

  购物车是电子商务网站中不可缺少的组成部分,但目前大多数购物车只能作为一个顾客选中商品的展示,客户端无法将购物车里的内容提取出来满足自己事务处理的需要,而这一点在有些电子商务活动中很有必要。XML的出现使得网络上传输的数据变得有意义起来,我们可以根据不同的要求以不同的样式将一个购物车的内容显示出来。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  本文将详细分析一个由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
   total0 /total
   /cart
  将这个XML字符串由parseString函数转换成XMLDocument存入myCart。
  其代码如下:
  public void emptyCart() throws IOException,SAXException{
      String stringCart=“ ?xml version=‘1.0’encoding=‘gb2312’? ”+
         “ cart total0 /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;
      }

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  除上述方法外,XMLCart还包括将XML字符串由输入时的String转换成XMLDocument的方法parseString,以及用于输出时将XSL赋给myCart并返回String型XML字串的 cartTurnToStringWithXSL方法来辅助购物车主要操作的实现,这里不再赘述。
  

来源:http://www.tulaoshi.com/n/20160219/1625693.html

延伸阅读
薄荷商品如何加入购物车   1)首先先打开,进去之后点击,接着点击。   2)然后选择商品点击进去,最后点击。  
天天果园怎么添加购物车?   1)首先打开天天果园,在界面选择要查看的水果点击进入。   2)进入界面点击即可添加到购物车,返回界面点击即可查看水果。  
天天果园如何删除购物车的商品   1)打开天天果园,点击屏幕下方   2)点击直到减为0即可删除           注 :更多精彩教程请关注图老师手机教程栏目,图老师手机数码群:296605639欢迎你的加入
蜜淘如何加入购物车   1)首先先打开,进去之后点击自己喜欢的商品。   2)接着进去后页面向上滑动一下点击,最后点击。  
标签: PS PS基础
先看效果图。 新建文档930x580像素,背景白色,建新层,用自定义形状工具画一个圆角矩形和一个正圆,颜色黑色。 添加图层样式。 效果如下。 建新层,再画出下图所示图形,颜色白色,添加蒙版,黑白直线渐变。 效果如下。 建新层,画一黑色圆角矩形。 添加图层样式。 建新层,调出这个圆角矩形的选区,填充...

经验教程

38

收藏

11
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部