购物车是电子商务网站中不可缺少的组成部分,但目前大多数购物车只能作为一个顾客选中商品的展示,客户端无法将购物车里的内容提取出来满足自己事务处理的需要,而这一点在有些电子商务活动中很有必要。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的购物车的实例代码详情的内容,更多相关内容请关注PHP中文网(www.php.cn)!

RSS是一种基于XML的格式,用于发布和订阅内容。RSS文件的XML结构包括根元素、元素和多个元素,每个代表一个内容条目。通过XML解析器读取和解析RSS文件,用户可以订阅并获取最新内容。

XML在RSS中具有结构化数据、可扩展性、跨平台兼容性和解析验证的优势。1)结构化数据确保内容的一致性和可靠性;2)可扩展性允许添加自定义标签以适应内容需求;3)跨平台兼容性使其在不同设备上无缝工作;4)解析和验证工具确保Feed的质量和完整性。

RSS在XML中的实现方式是通过结构化的XML格式来组织内容。1)RSS使用XML作为数据交换格式,包含频道信息和项目列表等元素。2)生成RSS文件需按规范组织内容,发布到服务器供订阅。3)RSS文件可通过阅读器或插件订阅,实现内容自动更新。

RSS的高级功能包括内容命名空间、扩展模块和条件订阅。1)内容命名空间扩展RSS功能,2)扩展模块如DublinCore或iTunes添加元数据,3)条件订阅根据特定条件筛选条目。这些功能通过添加XML元素和属性实现,提升信息获取效率。

rssfeedsusexmltoStructureContentUpdates.1)xmlProvidesHierarchicalStructurefordata.2)theelementDefinestHefEed'sIdentityAndContainsElements.3)ElementsRementsRementsRepresSentividividividualContentpieces.4)rsssissisexisextensible,允许custemements.5)5)

RSS和XML是用于网络内容管理的工具。RSS用于发布和订阅内容,XML用于存储和传输数据。它们的工作原理包括内容发布、订阅和更新推送。使用示例包括RSS发布博客文章和XML存储书籍信息。

RSS文档是基于XML的结构化文件,用于发布和订阅频繁更新的内容。它的主要作用包括:1)自动化内容更新,2)内容聚合,3)提高浏览效率。通过RSSfeed,用户可以订阅并及时获取来自不同来源的最新信息。

RSS的XML结构包括:1.XML声明和RSS版本,2.频道(Channel),3.条目(Item)。这些部分构成了RSS文件的基础,允许用户通过解析XML数据来获取和处理内容信息。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

Dreamweaver Mac版
视觉化网页开发工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

Atom编辑器mac版下载
最流行的的开源编辑器

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。