将XML从URL导入/解析到Magento
我有一个URL,其中包含产品的XML 我想做的是,如果可能的话,解析内容,然后将细节作为产品导入Magento 这是否可能?如果可能,我需要采取哪些步骤来实现这一点 谢谢 编辑: import_products.php将XML从URL导入/解析到Magento,magento,import,xml-parsing,Magento,Import,Xml Parsing,我有一个URL,其中包含产品的XML 我想做的是,如果可能的话,解析内容,然后将细节作为产品导入Magento 这是否可能?如果可能,我需要采取哪些步骤来实现这一点 谢谢 编辑: import_products.php require_once('app/Mage.php'); class import_products extends Mage_Core_Model_Abstract { public static function url_contents($url) { $c
require_once('app/Mage.php');
class import_products extends Mage_Core_Model_Abstract
{
public static function url_contents($url)
{
$crl = curl_init();
$timeout = 5;
curl_setopt ($crl, CURLOPT_URL,$url);
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
$ret = curl_exec($crl);
curl_close($crl);
return $ret;
}
}
import.php
require_once('import_products.php');
$app = Mage::app('default');
$product = Mage::getSingleton('catalog/product');
$objDOM = new DOMDocument();
$objDOM->load("http://www.example.com/products.xml");
$note = $objDOM->getElementsByTagName("car");
// for each note tag, parse the document and get values for
// tasks and details tag.
foreach( $note as $value )
{
$car_ids = $value->getElementsByTagName("Car_ID");
$car_id = $car_ids->item(0)->nodeValue;
$makes = $value->getElementsByTagName("Make");
$make = $makes->item(0)->nodeValue;
$models = $value->getElementsByTagName("Model");
$model = $models->item(0)->nodeValue;
$descriptions = $value->getElementsByTagName("Description");
$description = $descriptions->item(0)->nodeValue;
$short_descriptions = $value->getElementsByTagName("Specification");
$short_description = $short_descriptions->item(0)->nodeValue;
$prices = $value->getElementsByTagName("Price");
$price = $prices->item(0)->nodeValue;
$simple = 'simple';
$product->setAttributeSetId(4);
$product->setSku($task);
$product->setName($detail);
$product->setTypeId($simple);
$product->setPrice($price);
$product->setValue($price);
$product->setDescription($description);
$product->setShortDescription($short_description);
$product->setWeight(100);
$product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE);
$product->setStatus(Mage_Catalog_Model_Product_Status::STATUS_ENABLED);
$product->setTaxClassId(2);
$product->setStockData(array(
'is_in_stock' => 1,
'qty' => 99999
));
try {
$product->save();
echo "Saved";
}
catch (Exception $ex) {
echo "<pre>".$ex."</pre>";
}
//echo "$car_id :: $make :: $model :: $description :: $short_description :: $price <br /><br />";
}
require_once('import_products.php');
$app=Mage::app('default');
$product=Mage::getSingleton(“目录/产品”);
$objDOM=newdomdocument();
$objDOM->load(“http://www.example.com/products.xml");
$note=$objDOM->getElementsByTagName(“car”);
//对于每个note标记,解析文档并获取其值
//任务和详细信息标签。
foreach(按$value计价的票据)
{
$car_ID=$value->getElementsByTagName(“car_ID”);
$car\u id=$car\u id->item(0)->nodeValue;
$makes=$value->getElementsByTagName(“Make”);
$make=$make->item(0)->nodeValue;
$models=$value->getElementsByTagName(“模型”);
$model=$models->item(0)->nodeValue;
$descriptions=$value->getElementsByTagName(“Description”);
$description=$descriptions->item(0)->nodeValue;
$short_descriptions=$value->getElementsByTagName(“规范”);
$short\u description=$short\u description->item(0)->nodeValue;
$prices=$value->getElementsByTagName(“价格”);
$price=$prices->item(0)->nodeValue;
$simple='simple';
$product->setAttributeSetId(4);
$product->setSku($task);
$product->setName($detail);
$product->setTypeId($simple);
$product->setPrice($price);
$product->setValue($price);
$product->setDescription($description);
$product->setShortDescription($short_description);
$product->设定重量(100);
$product->SETVISION(图像目录\模型\产品\可见性::可见性\不可见);
$product->setStatus(图像目录\模型\产品\状态::状态\已启用);
$product->setTaxClassId(2);
$product->setStockData(阵列)(
“是否有库存”=>1,
“数量”=>99999
));
试一试{
$product->save();
回声“保存”;
}
捕获(例外$ex){
回显“$ex.”;
}
//echo“$car\u id::$make::$model::$description::$short\u description::$price
”;
}
您可以在Magento中获取参数,并使用简单的xml将字符串转换为xml
function get_url_contents($url){
$crl = curl_init();
$timeout = 5;
curl_setopt ($crl, CURLOPT_URL,$url);
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
$ret = curl_exec($crl);
curl_close($crl);
return $ret;
}
您可以使用该函数,然后在上面的
$xmlstr = self::XML_DECLARATION . get_url_contents('http://urlhere.com/xml');
你应该能做到这一点
$product = Mage::getSingleton('catalog/product');
// Build the product
$product->setSku($productData['sku']);
$product->setAttributeSetId(26);
$product->setTypeId('simple');
$product->setName($productData['description']);
$product->setCategoryIds(array(162));
$product->setWebsiteIDs(array(1));
$product->setDescription($productData['description']);
$product->setShortDescription($productData['description']);
$product->setPrice($productData['price']); # Set some price
$product->setWeight(4.0000);
$product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE);
$product->setStatus(Mage_Catalog_Model_Product_Status::STATUS_ENABLED);
$product->setData('is_salable', '1');
$product->setTaxClassId(2); # My default tax class
$product->setStockData(array(
'is_in_stock' => 1,
'qty' => 99999
));
try {
$product->save();
}
catch (Exception $ex) {
//Handle the error
}
然后,您可以使用简单的xml并将节点分配给products数组,在该数组中,您可以拥有一个产品集合,然后循环使用这些产品,并在Magento中以编程方式创建产品。显然,您可以更改硬编码的值,以满足您的任何需要
好的,我已经研究了使用高级配置文件:但它似乎没有通过curl连接并将文件保存在/var/import中-有什么想法吗?那么,你的URL要去哪里,它是你构建的自定义模块吗?如果是的话,你可以把它放在你的控制器中。url指向一个外部XML文件-如果这个导入可以作为URI使用,那就太好了:哦,我想你是说url在paramI中有XML更新了我的答案,我还没有试过,但我认为应该是正确的。您只需在根目录或可从web访问的地方创建一个文件,然后执行curl方法。我不得不删除self:part,因为它抛出了一个错误。另外,我没有得到:致命错误:找不到类“Mage”-我需要创建一个扩展Mage类的类吗?
$xmlstr = self::XML_DECLARATION . get_url_contents('http://urlhere.com/xml');
$product = Mage::getSingleton('catalog/product');
// Build the product
$product->setSku($productData['sku']);
$product->setAttributeSetId(26);
$product->setTypeId('simple');
$product->setName($productData['description']);
$product->setCategoryIds(array(162));
$product->setWebsiteIDs(array(1));
$product->setDescription($productData['description']);
$product->setShortDescription($productData['description']);
$product->setPrice($productData['price']); # Set some price
$product->setWeight(4.0000);
$product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE);
$product->setStatus(Mage_Catalog_Model_Product_Status::STATUS_ENABLED);
$product->setData('is_salable', '1');
$product->setTaxClassId(2); # My default tax class
$product->setStockData(array(
'is_in_stock' => 1,
'qty' => 99999
));
try {
$product->save();
}
catch (Exception $ex) {
//Handle the error
}