0

我目前正在使用 PHP 将一个 xml 文件拆分为多个较小的文件。为此,我从一组标题创建新的 xml 文件,然后使用 foreach 循环遍历原始 xml 文件,并使用 if 语句检查每个“产品”的“子类别”是否与其中一个匹配相关文件,然后在 if 语句中添加相关数据。

我的问题是第一个文件只包含相关数据,但之后的每个文件都包含来自先前已填充文件的数据以及它自己的数据。

下面的代码显示了这里的工作 - 我目前对每个子类别都有单独的 foreach 循环,但我不知道为什么,例如,搜索 subcategory3 会选择 subcategory1、subcategory2 和 subcategory3(尽管我可能遗漏了一些东西相当明显!)...

foreach( $xml->product as $product )
{
    // Look for different subcategories
    if (strpos($product->category ,'subcategory1') !== false)
    {
        // write data to xml file and save
        $root = $xmlFile->createElement("product");
        $root = $xmlFile->appendChild($root);

        // These lines are repeated for the various nodes
        $xml_node = $xmlFile->createElement("node1");
        $xml_node = $root->appendChild($xml_node);
        $node1Text = $xmlFile->createTextNode($product->node1);
        $node1Text = $xml_node->appendChild($node1Text);

        // Re-save the xml file
        $xmlFile->save("file.xml");
    }
}

任何帮助将不胜感激 - 在此先感谢各位!

哦,我还简要地尝试了一些子类别的 foreach 循环,并为不同的子类别使用了 if 和 elseif,但得到了相同的结果..

4

1 回答 1

0

好的,我通过随机尝试解决了这个问题 - 在任何 foreach 循环提取 xml 数据之前,我已经在标题数组上使用 foreach 创建了新的 xml 文件。但是,当我删除循环以创建文件并将它们单独放在循环之前以提取数据时,问题就消失了。在我看来这似乎不合逻辑,但显然就是这样!

于 2012-12-02T14:56:59.367 回答