将XML从URL导入/解析到Magento

将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

我有一个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)
 {
   $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
    }