傳統購物車僅供前端顯示,難以被外部系統擷取處理。XML 賦予資料自描述能力,透過 XSLT 可彈性轉換呈現樣式,支援企業整合與多通道應用。本文設計 XMLCart JavaBean,以 DOM 操作 XMLDocument 實現增刪改查與總價計算。
<?xml version='1.0' encoding='gb2312'?>
<cart>
<total>0</total>
<item>
<id>P001</id>
<name>產品名稱</name>
<price>100</price>
<quantity>2</quantity>
</item>
...
</cart>
public void emptyCart() throws IOException, SAXException {
String xml = "<?xml version='1.0' encoding='gb2312'?><cart><total>0</total></cart>";
myCart = parseString(xml);
}
public void addItemToCart(String stringItem) throws IOException, SAXException {
XMLDocument itemDoc = parseString(stringItem);
Node item = itemDoc.getElementsByTagName("item").item(0).cloneNode(true);
if (isCartEmpty()) emptyCart();
if (!isItemExist(item, myCart)) {
myCart.getDocumentElement().appendChild(item);
computeTotal();
}
}
public void moveItemFromCart(String id) {
NodeList items = myCart.getElementsByTagName("item");
Element root = myCart.getDocumentElement();
for (int i=0; i
public void addQuantityToCart(String qntyXml) throws IOException, SAXException {
XMLDocument qDoc = parseString(qntyXml);
NodeList newQtys = qDoc.getElementsByTagName("quantity");
NodeList oldQtys = myCart.getElementsByTagName("quantity");
for (int i=0; i
public void computeTotal() {
NodeList qtys = myCart.getElementsByTagName("quantity");
NodeList prices = myCart.getElementsByTagName("price");
float total = 0;
for (int i=0; i
public boolean isCartEmpty() {
return myCart.getElementsByTagName("item").getLength() == 0;
}
public boolean isItemExist(Node item, XMLDocument cart) {
String id = item.getFirstChild().getFirstChild().getNodeValue();
NodeList list = cart.getElementsByTagName("item");
for (int i=0; i
parseString(String):字串 → XMLDocument (DOMParser)。cartTurnToStringWithXSL(XSL):套用 XSLT 轉換輸出 HTML/CSV 等格式,支援多樣化呈現。XMLCart Session Bean。