2014-03-06 29 views
0

會有人知道我可以「爆炸」一個字符串回到「正常」的XML格式? 我發現這個腳本(參考:gooseflight,2010),看起來像它可以做的工作,但輸出出來粘在一起。如何在PHP中使用simpleXML將字符串加載回xml中?

下面的代碼:

enter code herefunction combineXML($file) 
{ 
    global $xmlstr; 

    $xml = simplexml_load_file($file); 

    foreach($xml as $element) 
     $xmlstr .= $element->asXML(); 
} 

$files[] = "tmp.xml"; 
$files[] = "traduction.xml"; 

$xmlstr = '<CAB>'; 

foreach ($files as $file) 
    combineXML($file); 

$xmlstr .= '</CAB>'; 

// Convert string to XML for further processing 

$xml = simplexml_load_string($xmlstr); 
$bytes = file_put_contents("combined.xml", $xml->asXML()) 

這裏是輸出:

<?xml version="1.0" encoding="UTF-8"?> 
<CAB> 
<CABO>XXXXXXXXXX0987650003</CABO><ACTIVITY>NONE</ACTIVITY><BEORI>blablaE</BEORI>BEDEST>blabla</BEDEST><NATRELA>more blabla</NATRELA><ANE>2014</ANE><NODEP>1111</NODEP> 
</CAB> 

所以,我怎麼能單獨的節點,以這個樣子?:

<?xml version="1.0" encoding="UTF-8"?> 
<CAB> 
<CABO>XXXXXXXXXX0987650003</CABO> 
<ACTIVITY>NONE</ACTIVITY> 
<BEORI>blablaE</BEORI> 
<BEDEST>blabla</BEDEST> 
<NATRELA>more blabla</NATRELA> 
<ANE>2014</ANE> 
<NODEP>1111</NODEP> 
..... 
</CAB> 

會有人知道如何解決它?

回答

0

我建議使用DomDocument類來保存XML;檢查此:

$dom_obj = new DOMDocument(); 
$dom_obj->loadXML($file); 
// Do all your changes to the file by using DomDocument command (e.g. CreateElement, CreateAttribute, etc) 
$dom_obj->formatOutput = true; 
$dom_obj->save($file); 
+0

感謝您的答覆隊友。在我研究DOM之前,有沒有辦法用上面的代碼來完成它? – baldfrogg

+0

我不確定這個工作是否成功,但試試這個'$ xml = simplexml_load_string($ xmlstr) - > asXML();' – Javad

相關問題