2012-12-01 461 views
0

我目前正在將一個xml文件分解成多個使用PHP的較小文件。爲此,我從一個標題數組中創建新的xml文件,然後使用foreach循環遍歷原始xml文件,並使用if語句來檢查每個'product'的'子類別'是否匹配相關文件,然後在if語句中添加相關數據。保留來自先前foreach循環的XML文件的多個PHP foreach循環

我的問題是,第一個文件出來只是有關的數據,但後來每一個都有來自先前已填充的文件,以及它自己的數據。下面的代碼顯示了這裏的工作 - 我目前對每個子類別都有單獨的foreach循環,但是從這個我不知道爲什麼,例如,爲了尋找子類別3會選擇子類別1,子類別2和子類別3(雖然我' m可能錯過了相當明顯的東西!)...

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循環的一些子類,如果和ELSEIF對於不同的子類使用,但得到了同樣的結果..

回答

0

好,我解決它通過只嘗試一些隨機的 - 我在任何foreach循環提取xml數據之前,使用foreach在標題數組上創建了新的xml文件。但是,當我刪除循環創建文件,並把它們分開之前提取數據循環問題消失。這在我的腦海中似乎不合邏輯,但這就是它的顯然!