DOMDocumentを使用してデータをループしてXMLファイルを作成するときに問題があります。このスクリプトをバッチで実行するまでは、すべてうまくいきました。 XMLファイルに複数の開始タグがあり、各バッチに1つのように見えます。'<?xml version="1.0"?>'
製品よりも多くの製品ノードが生成されています。誰も助けることができます。PHP DOMDocumentをバッチで使用してXMLファイルを構築する
//get products
$productsObj = new Products($db,$shopKeeperID);
//find out how many products
$countProds = $productsObj->countProducts();
$productBatchLimit = 3; //keep low for testing
//create new file
$file = 'products/'. $products . '.xml';
$fh = fopen($file, 'a');
//create XML document object model (DOM)
$doc = new DOMDocument();
$doc->formatOutput = true;
$counter = 1;
$r = $doc->createElement("products");
$doc->appendChild($r);
for ($i = 0; $i < $countProds; $i += $productBatchLimit) {
$limit = $productBatchLimit*$counter;
$products = $productsObj->getShopKeeperProducts($i, $limit);
$prod = '';
//loop through each product to create well formed XML
foreach($products as $product){
$prod = $doc->createElement("offer");
$offerID = $doc->createElement("offerID");
$offerID->appendChild($doc->createTextNode($product['prod_id']));
$prod->appendChild($offerID);
$productName = $doc->createElement("name");
$productName->appendChild($doc->createTextNode($product['productName']));
$prod->appendChild($productName);
$r->appendChild($prod);
$strxml = $doc->saveXML();
}
fwrite($fh, $strxml);
$counter++;
}
fclose($fh);
私は大量のデータを持っているため、ノードのバクテスを追加しようとしていて、XMLにファイルを追加するのではなく、ファイルを1つに保存するだけです。もしそうなら、私はどのように組み込むのですか?多くのありがとう – LeeTee
私は追加ルートを試して、それを行うことができますが、私はまた何らかのエラーを抱えていました(私は覚えていません)。申し訳ありません – Anil
私はあなたがこれを必要と思う:http://php.net/manual/en/domdocument.importnode.php – Anil