SetAmazonParser( $_xml ); } } function startElement( $_parser, $_name, $_attrs ){ switch( $_name ){ case 'ASIN': $this->NowMode = MODE_ASIN; break; case 'PRODUCTNAME': $this->NowMode = MODE_PRODUCTNAME; break; case 'RELEASEDATE': $this->NowMode = MODE_RELEASEDATE; break; case 'MANUFACTURER': $this->NowMode = MODE_MANUFACTURER; break; case 'IMAGEURLMEDIUM': $this->NowMode = MODE_IMAGEURLMEDIUM; break; case 'IMAGEURLSMALL': $this->NowMode = MODE_IMAGEURLSMALL; break; case 'LISTPRICE': $this->NowMode = MODE_LISTPRICE; break; case 'OURPRICE': $this->NowMode = MODE_OURPRICE; break; case 'PRODUCTDESCRIPTION': $this->NowMode = MODE_PRODUCTDESCRIPTION; break; case 'SIMILARPRODUCTS': //print "s:$_name
\n"; $this->NowMode = MODE_SIMILARPRODUCTS; break; case 'PRODUCT': //print "s:$_name
\n"; if( $this->NowMode == MODE_SIMILARPRODUCTS ){ $this->NowMode = MODE_SIMILARPRODUCTS_IN_PRODUCT; }else{ $this->NowMode = MODE_NONE; } break; case 'DETAILS': $this->AccessURL = $_attrs[ 'URL' ]; $this->NowMode = MODE_NONE; break; default: $this->NowMode = MODE_NONE; break; } } function endElement( $_parser , $_name ){ //print "e:$_name
\n"; switch( $this->NowMode ){ case MODE_SIMILARPRODUCTS_IN_PRODUCT: $this->NowMode = MODE_SIMILARPRODUCTS; //リセット break; default: $this->NowMode = MODE_NONE; //リセット } } function characterData( $_parser , $_data ){ //print "d:$_data
\n"; switch( $this->NowMode ){ case MODE_ASIN: $this->Asin = $_data; break; case MODE_PRODUCTNAME: $this->ProductName = $_data; break; case MODE_RELEASEDATE: $this->ReleaseDate = $_data; break; case MODE_MANUFACTURER: $this->Manufacturer = $_data; break; case MODE_IMAGEURLMEDIUM: $this->ImageUrlMedium = $_data; break; case MODE_IMAGEURLSMALL: $this->ImageUrlSmall = $_data; break; case MODE_LISTPRICE: $this->ListPrice = $_data; break; case MODE_OURPRICE: $this->OurPrice = $_data; break; case MODE_PRODUCTDESCRIPTION: $this->ProductDescription .= $_data; break; case MODE_SIMILARPRODUCTS_IN_PRODUCT: $_n = count( $this->SimilarProducts ); $this->SimilarProducts[ $_n ] = $_data; break; default: break; } } function SetAmazonParser( $_xmlbody ){ $this->Asin = ''; //リセット $this->ProductDescription = ''; $this->parser = xml_parser_create(); xml_set_object( $this->parser , &$this); xml_set_element_handler( $this->parser , "startElement" , "endElement" ); xml_set_character_data_handler( $this->parser , "characterData" ); xml_parse( $this->parser , $_xmlbody , FALSE ); xml_parser_free( $this->parser ); } //商品アクセス用 URL function GetAccessURL(){ return $this->AccessURL; } //ASIN/ISBN function GetAsin(){ return $this->Asin; } //製品名 function GetProductName(){ return $this->ProductName; } //発売日 function GetReleaseDate(){ return $this->ReleaseDate; } // 製造元/執筆者 function GetManufacturer(){ return $this->Manufacturer; } //イメージ( TRUE で小さいイメージ ) function GetImage( $_issmall = FALSE ){ if( $_issmall ){ return $this->ImageUrlSmall; } return $this->ImageUrlMedium; } //メーカ希望小売価格 function GetListPrice(){ return $this->ListPrice; } //アマゾンの価格 function GetOurPrice(){ if( !$this->OurPrice ){ return '売り切れ'; } return $this->OurPrice; } //説明 function GetProductDescription(){ return $this->ProductDescription; } //関連商品 function GetSimilarProducts(){ return $this->SimilarProducts; //配列 } } ?>