XML 기반 카 트 구현

카 트 는 전자상거래 사이트 에서 없어 서 는 안 될 구성 부분 이지 만 현재 대부분의 카 트 는 고객 이 선택 한 상품 의 전시 로 만 사용 할 수 있 고 클 라 이언 트 는 카 트 안의 내용 을 추출 하여 자신의 업무 처리 수 요 를 만족 시 킬 수 없다 는 점 은 일부 전자상거래 활동 에서 필요 하 다.XML 의 등장 으로 인해 인터넷 에서 전 송 된 데 이 터 를 의미 있 게 만 들 었 습 니 다.우 리 는 서로 다른 요구 에 따라 하나의 카 트 의 내용 을 서로 다른 스타일 로 표시 할 수 있 습 니 다.본 고 는 자바 가 실현 한 XML 기반 카 트 를 상세 하 게 분석 할 것 이다.다음은 다섯 가지 상품 을 포함 한 카 트 의 XML 내 적 구조 입 니 다.그 뿌리 요 소 는 cart 이 고 토 탈 요 소 는 카 트 안의 총 금액 을 나타 내 며 각 아 이 템 요 소 는 하나의 상품 을 나타 내 고 아 이 템 의 하위 요 소 는 해당 상품 의 구체 적 인 정 보 를 표시 하 며 실제 상황 에 따라 추가,수정 또는 삭제 할 수 있 습 니 다.여기 서 카 트 를 표시 하 는 클래스 를 만들어 야 합 니 다.XMLcart.java 는 자바 빈 이기 때문에 빈 구조 함 수 를 포함 합 니 다.이 종 류 는 카 트 의 기본 적 인 기능 을 포함한다.빈 카 트 를 만 들 고 카 트 에 상품 을 추가 하 며 카 트 안의 상품 을 삭제 하고 카 트 안의 상품 수량 을 바 꾸 며 카 트 를 비 우 는 등 이다.이 는 전체 개인 변수 인'private XMLdocument my Cart'를 가지 고 있 습 니 다.my Cart 는 카 트 의 상세 한 내용 을 저장 하 는 데 사 용 됩 니 다.카 트 의 기본 기능 은 바로 그것 에 대한 조작 입 니 다.그 유형 은 XMLdocument,즉 XML 문서 입 니 다.이렇게 하면 카 트 에 대한 조작 은 my Cart 의 하위 요소 에 대한 추가,삭제,그리고 요소 값 의 계산,수정 등 으로 전환 된다.1.카 트 를 비우 고 카 트 를 비우 면 빈 카 트 가 생 성 된다.여기 빈 카 트 는 루트 요소 cart 와 그 요소 totalk 을 포함 한 XML 문서 입 니 다.totalk 요 소 는 카 트 의 총 금액 입 니 다.그의 초기 값 은 0 이 고 XML 의 구체 적 인 형식 은 다음 과 같 습 니 다.< cart>0이 XML 문자열 을 parseString 함수 에서 XML document 으로 변환 하여 my Cart 에 저장 합 니 다.그 코드 는 다음 과 같 습 니 다:public void empty Cart()throws IOException,SAXException{    String stringCart=“< ?xml version=‘1.0'encoding=‘gb2312'?> ”+       “< cart>< total>0< /total>< /cart>”;      myCart=parseString(stringCart);    }2.상품 추가 상품,곧 들 어 올 아 이 템 요 소 를 루트 요소 cart 에 추가 합 니 다.그 중에서 아 이 템 에는 상품 의 상세 한 정 보 를 포함 하고 totalk 의 값 을 계산 합 니 다.그 코드 는 다음 과 같 습 니 다:Public void addItemToCart(String string Item)throws IOException,SAXException{//item 을 String 에서 XMLdocument XMLdocument itemAdded=parseString(string Item)으로 변환 합 니 다./item 노드 를 꺼 내 고 NodeList itemList=itemAdded.getElementsByTagName("item")을 복사 합 니 다.Node item=itemList.item(0);Node cloneItem=item.cloneNode(true);//카 트 가 비어 있 으 면 새로운 카 트 if(isCartEmpty(){를 만 듭 니 다.     myCart.emptyCart();}//이 상품 이 카 트 에 없 으 면 이 상품 을 삽입 하고 총 금액 if(!isItemExist(item,my Cart){/my Cart 의 루트 요 소 를 가 져 오고 복 사 된 item 노드 를 뒤에 Element cartRoot=my Cart.getDocumentElement()에 추가 합 니 다.Node cartNode=cartRoot.appendChild(cloneItem);        computeTotal();    //총 금액 을 계산 하 다        }    }3.상품 삭제,상품 코드 에 따라 해당 상품 의 아 이 템 요 소 를 my Cart 의 루트 요소 인 cart 에서 삭제 하고 total 의 값 을 다시 계산 합 니 다:Public void move ItemFromCart(String id){//아 이 템 단위 의 노드 집합 cartList 와 루트 요소 인 cartRoot 를 추출 합 니 다.  NodeList cartList=myCart.getElementsByTagName(“item”);     Element cartRoot=myCart.getDocumentElement();      //cartrist 에서 선택 한 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.상품 수량 변경 은 고객 이 페이지 에 기입 한 수량 에 따라 my Cart 의 quantity 를 수정 하고 total:Public void addQuantity ToCart(String qnty)throws IOException,SAXException{    //상품 수 를 포함 하 는 XML 문자열 을 XML 문서 XMLdocument quantity Changed=parseString(qnty)로 변환 합 니 다./새로운 수량 을 포함 하 는 quantity 노드 집합 과 my Cart 의 quantity 노드 집합 NodeList quantity List=quantity Changed.getElement sByTagName("quantity")을 추출 합 니 다.NodeList cartList=myCart.getElementsByTagName(“quantity”);//순환 변경 상품 의 수량 for(int x=0;x< cartList.getLength();x++){//새로운 quantity 의 값 을 my Cart 에 해당 하 는 quantity 에서 String quantity=quantity List.item(x).getFirstChild().getNodeValue()에 부여 합 니 다.cartList.item(x).getFirstChild().setNodeValue(quantity);}computeTotal();    //총 금액 을 계산 하 다    }5.총 금액 을 계산 하면 total 의 값 을 계산 하 는데 그 중에서 total=∑(price*quantity):public void compute Total(){    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 을 my Cart 에 첨부 한 totalString totalString=String.valueOf(total);    myCart.getElementsByTagName(“total”).    item(0).getFirstChild().setNodeValue(totalString);  }6.카 트 가 비어 있 는 지 아 닌 지 를 판단 할 때 는 보통 새로운 상품 을 추가 할 때 카 트 가 비어 있 는 지,비어 있 으 면 새로운 카 트 를 만들어 야 한다.public boolean isCartEmpty(){/item 의 노드 집합 입 니 다.이 노드 집합 에 포 함 된 노드 수가 0 이면 카 트 에 상품 이 없습니다.true NodeList item List=my Cart.getElement sByTagName("item")을 되 돌려 줍 니 다.if(itemList.getLength()==0) return true;else return false;}7.선택 한 상품 이 카 트 에 있 는 지 판단 하여 새로 들 어 온 아 이 템 이 마 이 카 트 에 존재 하 는 지 판단 하고 존재 하면 트 루 로 돌아 갑 니 다.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;    }위 와 같은 방법 외 에 XML 문자열 을 입력 할 때의 String 에서 XML document 으로 변환 하 는 방법 parseString,출력 할 때 XSL 을 my Cart 에 부여 하고 String 형 XML 문자열 을 되 돌려 주 는 carttonToString WithXSL 방법 으로 카 트 의 주요 조작 을 보조 하 는 방법 도 포함 되 어 있 습 니 다.

좋은 웹페이지 즐겨찾기