ホームページ > バックエンド開発 > XML/RSS チュートリアル > XML ベースのショッピング カートのコード例の詳細

XML ベースのショッピング カートのコード例の詳細

黄舟
リリース: 2017-03-04 17:29:14
オリジナル
1624 人が閲覧しました

ショッピング カートは電子商取引 Web サイトに不可欠な部分ですが、現在、ほとんどのショッピング カートは顧客が選択した商品の表示としてのみ使用でき、クライアントは自身の取引に応じてショッピング カートの内容を抽出することができません。処理ニーズ、およびこれは一部の電子商取引活動で必要です。 XML の登場により、ネットワーク上で送信されるデータが意味のあるものになり、さまざまな要件に応じてショッピング カートの内容をさまざまなスタイルで表示できるようになります。

この記事では、Java で実装された XML ベースのショッピング カートを詳細に分析します。以下は、5 つのアイテムを含むショッピング カートの XML 内部構造です。ルート要素はカート、total 要素はショッピング カート内の合計金額を表し、各 item 要素は製品を表し、アイテム内のサブ要素はマークされています。実際の状況に応じて、製品の固有情報を追加、変更、または削除できます。

ここでは、ショッピング カートを表すクラス XMLCart.java を作成する必要があります。これは JavaBean であるため、空のコンストラクターが含まれています。このクラスには、ショッピング カートのいくつかの基本機能が含まれています。空のショッピング カートの生成、ショッピング カートへの商品の追加、ショッピング カート内の商品の削除、ショッピング カート内の商品数の変更、ショッピング カートのクリアなどです。グローバルプライベート変数「PRivate XMLDocument myCart」は、ショッピング カートの詳細な内容を格納するために使用されます。その型は XML ドキュメントです。このようにして、ショッピングカートの操作は、myCart内の子要素の追加と削除、要素の値の計算と変更に変換されます。

1. ショッピング カートをクリアする

ショッピング カートをクリアすると、空のショッピング カートが生成されます。ここでの空のショッピング カートは、ルート要素の cart とその要素 total を含む XML ドキュメントであり、その初期値は 0 です。その具体的な XML 形式は次のとおりです。 string は parseString です。関数はそれを XMLDocument に変換し、myCart に保存します。

コードは次のとおりです:


< ?xml version=‘1.0’ encoding=‘gb2312’?>
< cart>
< total>0< /total>
< /cart>
ログイン後にコピー

2. 製品の追加

製品を追加します。つまり、入荷したアイテム要素をルート要素のカートに追加します。

、アイテムには製品の詳細が含まれており、同時に合計値を計算します。コードは以下の通りです:

public void emptyCart() throws IOException,SAXException{
    String stringCart=“< ?xml version=‘1.0’encoding=‘gb2312’?> ”+
       “< cart>< total>0< /total>< /cart>”;
      myCart=parseString(stringCart);
    }
ログイン後にコピー

3. 商品の削除
商品を削除します。つまり、商品コードに従って myCart のルート要素カートから商品の item 要素

を削除し、合計の値を再計算します:


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();    //计算总金额
        }
    }
ログイン後にコピー

4。 製品の数量を変更します
お客様がページで入力した数量に従って、myCart の数量を変更し、
合計を再計算します:

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();    //计算总金额
    }
ログイン後にコピー

5。 合計金額
の計算とは、合計=∑(価格*数量):

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();    //计算总金额
    }
ログイン後にコピー

6の合計の値を計算することを意味します。 ショッピング カートが空かどうかを確認します
通常、新しい商品を追加するときは、ショッピング カートが空かどうかも確認する必要があります
ショッピング カートが空の場合は、新しいショッピング カートを生成する必要があります。

れぇ
7. 選択した商品が既にショッピングカートに入っているかどうかを判定します
つまり、新しく転送された商品の項目が既にmyCartに存在するかどうかを判定します。存在する場合はtrueを返します。

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);
  }
ログイン後にコピー

上記のメソッドに加えて、XMLCart には、入力時に XML 文字列を String から XMLDocument に変換するメソッド parseString と、myCart に XSL を割り当て、入力時に String 型の XML 文字列を返すために使用される cartTurnToStringWithXSL メソッドも含まれています。ショッピング カートの主な操作の実装については、ここでは説明しません。

上記は、XML ベースのショッピング カートのサンプル コードの詳細です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート