2011-08-23 53 views
0

我有4個xml文件,我想創建一個唯一的文件,每個文件的內容除了第2行和最後一行。PHP xml - 連接幾個文件在一個

詳情:

我的XML文件:

<?xml version="1.0"?> 
<Clients xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<Client> 
    <client_id>123458</client_id> 
    <client_type>People</client_type> 
    <client_sub_type>Sub people</client_sub_type> 
    <name>Alerich</name> 
    <surname>Higor</surname> 
</Client> 
<Client> 
    <client_id>5487</client_id> 
    <client_type>People</client_type> 
    <client_sub_type>Sub people</client_sub_type> 
    <name>Newman</name> 
    <surname>Matew</surname> 
</Client> 
</Clients> 

1.XML,2.XML,3.XML和4.XML有這樣的內容。

,我想創造出與

<?xml version="1.0"?> 
<Clients xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

末開始final.xml文件:

</Clients> 

和我的論文線之間要爲第四檔的所有行。

你有一些提示嗎?

謝謝。

回答

0

fgets閱讀文件,並使用preg_match檢查xml或clients標記。如果該行不匹配,則將該行寫入新文件。當然你必須在新文件周圍放置一個新的xml和clients標籤。

3

您可以使用PHP DOM函數來實現這一目標:

$d1 = new DOMDocument(); 
$d1->load('1.xml'); 
$root = $d1->getElementsByTagName('Clients')->item(0); 

// List of other xml files 
$files = array('2.xml', '3.xml', '4.xml'); 

foreach($files as $file) { 
    $d2 = new DOMDocument(); 
    $d2->load($file); 
    foreach($d2->getElementsByTagName('Client') as $elem) { 
     $newNode = $d1->importNode($elem, true); 
     $root->appendChild($newNode); 
    } 
} 
$d1->saveXMLFile('newfile.xml')); 

一般提示:不要在換行的任何假設在XML文件中!所以你的「前兩行和最後一行」的前提可能是錯誤的。使用XML函數而不是字符串函數可以避免這些問題。