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; //配列
}
}
?>