我编写了一段代码,根据该代码,我可以根据记录数将一个 XML 文件写入多个 XML 文件。
我在一个 XML 文件中有 14 条记录,在 XML 文件中具有不同的标签。
我正在尝试创建每个有 2 条记录的 XML 文件,所以最终我应该有 7 个 XML 文件。
但我只收到 14 个文件,每个文件都有两个相似的记录。
以下是我的 XML 格式,它是动态创建的。格式正确。但每个文件中都有两个相似的条目。因此,它写入了 14 个文件,而不是 7 个文件。
<?xml version="1.0"?>
<data>
<Product>
<PID>SGLDN7XJ2FPZH8G8</PID>
<PNAME>Miami Blues Aviator Sunglasses</PNAME>
</Product>
</data>
以下是我正在制作 XML 文件的文件。我认为初始化 for 循环有问题:
$docOutput = new DOMDocument("1.0");
$root = $docOutput->createElement("data");
$docOutput->appendChild($root);
if (!$sxmlReading = simplexml_load_file('firstxml.xml')) {
throw new RuntimeException('Error reading XML file');
}
$x = 0;
foreach ($sxmlReading as $syn) {
for ($i = $x * 2; $i < ($x + 1) * 2; $i++) {
$id = $docOutput->createElement("PID");
$idText = $docOutput->createTextNode($syn->productId);
$id->appendChild($idText);
$title = $docOutput->createElement("PNAME");
$titleText = $docOutput->createTextNode($syn->productname);
$title->appendChild($titleText);
$book = $docOutput->createElement("Product");
$book->appendChild($id);
$book->appendChild($title);
$root->appendChild($book);
$docOutput->formatOutput = true;
echo "<xmp>" . $docOutput->saveXML() . "</xmp>";
$docOutput->save("xml$x.xml") or die("Error");
}
$x++;
}
请检查代码并突出显示我的错误...
最佳答案
它正在写入 14 个文件,因为您正在调用 DOMDocument::save()
方法14次。
老实说,这对我来说更像是一个错字,我看不出有什么问题。 PHP 只是按照您编写的方式执行操作。
关于php - for循环将两个相似的条目放入php的一个循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24269156/