0

私は現在、PHPを使用して1つの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

さて、私はランダムなことを試してそれを解決しました-xmlデータを抽出するためのforeachループの前に、タイトルの配列でforeachを使用して新しいxmlファイルを作成しました。ただし、ループを削除してファイルを作成し、データを抽出するためにループの前に別々に配置すると、問題は解消されました。私の頭の中では論理的ではないようですが、それは明らかにそうです!

于 2012-12-02T14:56:59.367 に答える