最新公告
  • 欢迎您光临立业阁,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 基于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方法来辅助购物车主要操作的实现,这里不再赘述。

    以上就是基于XML的购物车的实例代码详情的内容,更多相关内容请关注liyege(www.liyege.cn)!

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    • 1021会员总数(位)
    • 111838资源总数(个)
    • 5本周发布(个)
    • 0 今日发布(个)
    • 212稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情
    冀ICP备19022365号-1 百度地图

    侵权联系邮箱[email protected]

    立业阁(www.liyege.cn)免费提供wordpress主题模板、dedecms模板、帝国cms模板、小说网站源码、电影网站源码以及网络技术分享,建站源码,小说模板,电影模板,网赚教程,VPS推荐