v2.5.2
Giriş yap

php ile xml okuma Problemi

kenangms1
466 defa görüntülendi

merhaba arkadaşlar yardımınıza ihtiyacım var.

https://korfezotoyedekparca.site/martas1.xml adresinde ürünlerimin bulunduğu bir xml mevcut bu ürünlerin olduğu xml i

<?php

$data = simplexml_load_file("https://korfezotoyedekparca.site/martas1.xml");
$xml = new SimpleXMLElement("<xml/>");
foreach ($data->Products as $Products);
$Products= $xml->addChild("Products");
$Product_elements =$Products->addchild("Product");
$Product_elements->addchild("ID", $data->Result->Products->Product["ID"]);
$Product_elements->addchild("BrandID", $data->Result->Products->Product["BrandID"]);
$Product_elements->addchild("ProductCode", $data->Result->Products->Product["ProductCode"]);
$Product_elements->addchild("Unit", $data->Result->Products->Product["Unit"]);
$Product_elements->addchild("MinOrderAmount", $data->Result->Products->Product["MinOrderAmount"]);
$Product_elements->addchild("BaseOeNr", $data->Result->Products->Product->BaseOeNr);
$Product_elements->addchild("ProductName", $data->Result->Products->Product->ProductNames->ProductName);
$Product_elements->addchild("Price", $data->Result->Products->Product->Pricing->LocalNetPriceWVat);
header('content-type:text/xml');
echo $xml->asXML();

?>

bu kod ile almaya çalışıyorum ancak normalde 310.000 adet ürün var.
Deneme amaçlı 3 tane koydum ancak sadece 1 tanesini yani en baştaki ürünü çekebiliyorum yardımcı olursanız çok sevinirim.

<xml>
<Products>
<Product>
<ID>135557</ID>
<BrandID>174</BrandID>
<ProductCode>KR-PML-PXCRA-002L1</ProductCode>
<Unit>PCE</Unit>
<MinOrderAmount>1</MinOrderAmount>
<BaseOeNr>5525744100</BaseOeNr>
<ProductName>MAKAS LASTIK-(HYUNDAI: H100 MINUBUS 94>08/H100 KAMYONET 94>11/MITSUBISHI: L300 90>11 )UZUN</ProductName>
<Price>6.67267752</Price>
</Product>
</Products>
</xml>

munzevi
866 gün önce

önce keşke dökümanı inceleseydiniz, kullanımınız bir çok farklı açıdan yanlış.
bu benim hazırladığım durumu en yalın haliyle özetleyen kod

$xml = new SimpleXMLElement('https://korfezotoyedekparca.site/martas1.xml', LIBXML_PARSEHUGE, true);
$urun = $xml->xpath('//Products');
print_r($urun);

hatan ise, ürünleri okumak değil, anahtarlarını kullanarak ürün oluşturmaya çalışmak. başlangıcın böyle olmalı. örnek kodda tüm ürünlerin bilgileri ve xml nitelikleri mevcut. istediğiniz şekilde oluşturabilirsiniz. ürünleri oluştururken döngüye almanız gerekiyor, okurken değil.

php'nin kendi sitesindeki örneği ise;

function RecurseXML($xml,$parent="")
{
   $child_count = 0;
   foreach($xml as $key=>$value)
   {
      $child_count++;    
      if(RecurseXML($value,$parent.".".$key) == 0)  // no childern, aka "leaf node"
      {
         print($parent . "." . $key . " = " . $value . "<BR>\n");       
      }    
   }
   return $child_count;
}

döküman adresi https://www.php.net/manual/tr/class.simplexmlelement.php