基于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的购物车的实例代码详情的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Bolehkah fail XML dibuka dengan PPT? XML, Extensible Markup Language (Extensible Markup Language), ialah bahasa markup universal yang digunakan secara meluas dalam pertukaran data dan penyimpanan data. Berbanding dengan HTML, XML lebih fleksibel dan boleh menentukan tag dan struktur datanya sendiri, menjadikan penyimpanan dan pertukaran data lebih mudah dan bersatu. PPT, atau PowerPoint, ialah perisian yang dibangunkan oleh Microsoft untuk membuat pembentangan. Ia menyediakan cara yang komprehensif untuk

Tukar data XML dalam Python kepada format CSV XML (ExtensibleMarkupLanguage) ialah bahasa penanda boleh diperluas yang biasa digunakan untuk penyimpanan dan penghantaran data. CSV (CommaSeparatedValues) ialah format fail teks dipisahkan koma yang biasa digunakan untuk import dan eksport data. Semasa memproses data, kadangkala data XML perlu ditukar kepada format CSV untuk analisis dan pemprosesan yang mudah. Python adalah yang kuat

Mengendalikan Ralat dan Pengecualian dalam XML Menggunakan Python XML ialah format data yang biasa digunakan untuk menyimpan dan mewakili data berstruktur. Apabila kami menggunakan Python untuk memproses XML, kadangkala kami mungkin menghadapi beberapa ralat dan pengecualian. Dalam artikel ini, saya akan memperkenalkan cara menggunakan Python untuk mengendalikan ralat dan pengecualian dalam XML, dan menyediakan beberapa kod sampel untuk rujukan. Gunakan pernyataan cuba-kecuali untuk menangkap ralat penghuraian XML Apabila kami menggunakan Python untuk menghuraikan XML, kadangkala kami mungkin menghadapi beberapa

Bagaimana untuk melaksanakan fungsi troli beli-belah yang mudah di Jawa? Troli beli-belah ialah ciri penting kedai dalam talian, yang membolehkan pengguna menambah item yang mereka ingin beli pada troli beli-belah dan mengurus item. Di Jawa, kita boleh melaksanakan fungsi troli beli-belah yang mudah dengan menggunakan pendekatan berorientasikan objek. Pertama, kita perlu menentukan kategori produk. Kelas ini mengandungi atribut seperti nama produk, harga dan kuantiti, serta kaedah Getter dan Setter yang sepadan. Contohnya: publicclassProduct

Python menghuraikan aksara khas dan jujukan melarikan diri dalam XML XML (eXtensibleMarkupLanguage) ialah format pertukaran data yang biasa digunakan untuk memindahkan dan menyimpan data antara sistem yang berbeza. Semasa memproses fail XML, anda sering menghadapi situasi yang mengandungi aksara khas dan urutan melarikan diri, yang boleh menyebabkan ralat penghuraian atau salah tafsiran data. Oleh itu, apabila menghuraikan fail XML menggunakan Python, kita perlu memahami cara mengendalikan aksara khas dan urutan melarikan diri ini. 1. Watak istimewa dan

Cara mengendalikan format data XML dan JSON dalam pembangunan C# memerlukan contoh kod khusus Dalam pembangunan perisian moden, XML dan JSON ialah dua format data yang digunakan secara meluas. XML (Extensible Markup Language) ialah bahasa penanda yang digunakan untuk menyimpan dan menghantar data, manakala JSON (JavaScript Object Notation) ialah format pertukaran data yang ringan. Dalam pembangunan C#, kami selalunya perlu memproses dan mengendalikan data XML dan JSON Artikel ini akan memfokuskan pada cara menggunakan C# untuk memproses kedua-dua format data ini dan melampirkan

Tutorial praktikal: Penjelasan terperinci tentang fungsi troli beli-belah dengan PHP dan MySQL Fungsi troli beli-belah adalah salah satu fungsi biasa dalam pembangunan laman web Melalui troli beli-belah, pengguna boleh menambah barang yang ingin dibeli ke troli beli-belah, dan kemudian teruskan dengan penyelesaian dan pembayaran. Dalam artikel ini, kami akan memperincikan cara melaksanakan fungsi troli beli-belah yang mudah menggunakan PHP dan MySQL dan memberikan contoh kod khusus. Untuk mencipta pangkalan data dan jadual data, anda perlu mencipta jadual data dalam pangkalan data MySQL terlebih dahulu untuk menyimpan maklumat produk. Berikut ialah jadual data ringkas

Cara menggunakan Redis dan JavaScript untuk melaksanakan fungsi troli beli-belah adalah salah satu fungsi yang sangat biasa dalam tapak web e-dagang menguruskan barang yang dibeli pada bila-bila masa. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Redis dan JavaScript untuk melaksanakan fungsi troli beli-belah dan memberikan contoh kod khusus. 1. Persediaan Sebelum memulakan, kita perlu memastikan bahawa Redis telah dipasang dan dikonfigurasikan, yang boleh dilakukan melalui laman web rasmi [https:/
