首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

打造基於 XML 的 Java 購物車:結構設計與核心操作全解析

     編輯:Java 相關知識

為什麼選擇 XML 作為購物車數據格式?

傳統購物車多以 Session 物件或資料表儲存,難以跨系統共享或異構展示。XML 以自描述、平台無關、易於 XSLT 轉換為 HTML/WML/PDF 等多種終端格式的特性,成為電商數據交換的理想載體。本文以 XMLCart JavaBean 為例,詳細拆解基於 DOM 的購物車完整實作。

XML 購物車結構定義

<?xml version="1.0" encoding="gb2312"?>
<cart>
  <total>0</total>
  <item>
    <id>P001</id>
    <name>筆記型電腦</name>
    <price>45000</price>
    <quantity>1</quantity>
  </item>
  <!-- 更多 item -->
</cart>
  • <cart>:根元素
  • <total>:總金額,冗余存儲避免重複計算
  • <item>:單一商品,可擴展屬性(圖片、規格、優惠等)

核心類:XMLCart

類結構:

  • 私有欄位 XMLDocument myCart:內存中 DOM 樹,所有操作最終反映於此。
  • 無參構造函數:符合 JavaBean 規範,便於框架實例化。
  • 輔助方法 parseString(String) / cartTurnToStringWithXSL():字串⇄DOM 轉換與 XSLT 輸出。

七大核心操作詳解

1. 清空購物車 emptyCart()

public void emptyCart() throws IOException, SAXException {
    String xml = "0";
    myCart = parseString(xml);
}

2. 添加商品 addItemToCart(String itemXml)

  1. 解析傳入 <item> 片段為 DOM。
  2. 若購物車為空,先 emptyCart()。
  3. 檢查商品 ID 是否已存在(isItemExist()),不存在則 appendChild 並重算總額。

3. 刪除商品 moveItemFromCart(String id)

  • 遍歷 myCart 中所有 <item>,比對 <id> 文本值。
  • 命中則 removeChild,跳出循環,重算總額。

4. 修改數量 addQuantityToCart(String qtyXml)

  • 解析前端提交的數量 XML,取得 <quantity> 節點列表。
  • 按順序將新值覆寫到 myCart 對應節點的 setNodeValue()。
  • 重算總額。

5. 計算總額 computeTotal()

public void computeTotal() {
    NodeList qtys = myCart.getElementsByTagName("quantity");
    NodeList prices = myCart.getElementsByTagName("price");
    float total = 0f;
    for (int i = 0; i < prices.getLength(); i++) {
        float q = Float.parseFloat(qtys.item(i).getFirstChild().getNodeValue());
        float p = Float.parseFloat(prices.item(i).getFirstChild().getNodeValue());
        total += q * p;
    }
    myCart.getElementsByTagName("total").item(0).getFirstChild().setNodeValue(String.valueOf(total));
}

6. 判斷空車 isCartEmpty()

檢查 getElementsByTagName("item").getLength() == 0。

7. 判斷商品是否存在 isItemExist(Node item, XMLDocument cart)

遍歷車內 <item>,比較 <id> 文本值。

擴展與優化建議

  • 命名空間與 Schema:引入 XSD 校驗結構完整性。
  • XSLT 多端適配:同一 XML,配合不同 XSLT 輸出 PC 網頁、手機 WAP、PDF 發票。
  • 持久化策略:定期將 myCart 序列化至資料庫/Redis,支援跨 Session 恢復。
  • 並發安全:若購物車存於 Session,單執行緒訪問通常無問題;若共享實例,需加鎖或使用線程安全 DOM 實現。
  • 大數據量優化:商品數極大時,考慮 SAX/StAX 流式處理或拆分子文檔。

結語

基於 XML 與 DOM 的購物車實作,結構清晰、擴展性強、易於多渠道轉換。XMLCart 將所有操作封裝為 DOM 節點增刪改,業務邏輯與數據表達分離,是中小型電商系統的優質選型。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved