v2.5.2
Giriş yap

php ile xml okuma Problemi

kenangms1
465 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
865 gün önce

evet. gerçekten uzun bir süre uğraşmışsın eğer dediğin kadar vakit aldıysa, SimpleXMLElement bunun için tercih edeceğim bir sınıf değil. son mesajında belirtiğin okumayı, örneğimi inceleseniz ve dökümana sadece bir göz atsanız basitçe şöyle yapabilirdiniz;

$xml = new SimpleXMLElement('https://korfezotoyedekparca.site/martas1.xml', LIBXML_PARSEHUGE, true);
$urun = $xml->xpath('//Products');
header('content-type:text/xml');
foreach($urun as $u){
    echo $u->asXML();
}

ama benim tercihim DomDocument olurdu, daha fazla seçeneği mevcut, üstelik html ile çalışacağınız zamanda bu sınıfı kullanabilirsiniz, ilerde faydası olur bu açıdan;

$file = file_get_contents('https://korfezotoyedekparca.site/martas1.xml');
$dom = new DomDocument();
$dom->loadXML($file);
$urunler = $dom->getElementsByTagName('Products')[0];
header('content-type:text/xml');
echo $dom->saveXML($urunler);

ikincisi ayrıca daha performanslı.
ikisininde sonucu şu;
ekran görüntüsü