[英]How Do I merge 3 XML files into one xml using PHP?
所以我需要使用 PHP 將 3 個 xml 文件合並為一個 xml 文件。 我對如何做到這一點感到有些困惑。 對此的一些指導將不勝感激。
這些是我需要合並的 3 個文件:
XML 1
<?xml version="1.0" encoding="UTF-8"?>
<CD_LIST country="USA">
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
</CD_LIST>
XML 2
<?xml version="1.0" encoding="UTF-8"?>
<CD_LIST country="UK UK UK">
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tylor</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
<CD>
<TITLE>Still got the blues</TITLE>
<ARTIST>Gary More</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Virgin records</COMPANY>
<PRICE>10.20</PRICE>
<YEAR>1990</YEAR>
</CD>
<CD>
<TITLE>This is US</TITLE>
<ARTIST>Gary Lee</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Virgin records</COMPANY>
<PRICE>12.20</PRICE>
<YEAR>1990</YEAR>
</CD>
</CD_LIST>
XML 3
<?xml version="1.0" encoding="UTF-8"?>
<CD_LIST country="AU AU">
<CD>
<TITLE>Whispering Jack</TITLE>
<ARTIST>John Farnham</ARTIST>
<COUNTRY>AU</COUNTRY>
<COMPANY> Farnham's studio </COMPANY>
<PRICE>22.00</PRICE>
<YEAR>1986</YEAR>
</CD>
<CD>
<TITLE>Innocent Eyes</TITLE>
<ARTIST>Delta Goodrem</ARTIST>
<COUNTRY>AU</COUNTRY>
<COMPANY> Delta Goodrem studio </COMPANY>
<PRICE>13.50</PRICE>
<YEAR>2008</YEAR>
</CD>
</CD_LIST>
最終輸出必須包括這一行:
<?xml version="1.0" encoding="UTF-8"?>
由於簡單地嘗試合並文檔存在一個小問題,因為每個文檔都有一個具有不同屬性的文檔根......
<CD_LIST country="AU AU">
<CD_LIST country="UK UK UK">
<CD_LIST country="USA">
所以有兩種可能性,一種是在這些標簽之上創建一個新標簽並復制此標簽下的全部內容,或者第二種是將所有 CD 元素復制到一個新的根元素下。
這段代碼在一個新的根目錄下簡單地將它們合並在一起......
function mergeFile ( DOMDocument $target, $fileName ) {
$source = new DOMDocument();
$source->load($fileName);
$import = $target->importNode($source->documentElement, true);
$target->documentElement->appendChild($import);
}
$target = new DOMDocument();
$target->loadXML('<?xml version="1.0" encoding="utf-8"?><CD_LIST></CD_LIST>');
mergeFile($target, "NewFile.xml");
mergeFile($target, "NewFile1.xml");
mergeFile($target, "NewFile2.xml");
$target->save("out.xml");
創建一個文檔,如...
<?xml version="1.0" encoding="utf-8"?>
<CD_LIST>
<CD_LIST country="USA">
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
</CD_LIST>
<CD_LIST country="UK UK UK">
<CD>
第二個選項是...
function mergeFile2 ( DOMDocument $target, $fileName ) {
$source = new DOMDocument();
$source->load($fileName);
foreach ( $source->getElementsByTagName("CD") as $cd ) {
$import = $target->importNode($cd, true);
$target->documentElement->appendChild($import);
}
}
$target = new DOMDocument();
$target->loadXML('<?xml version="1.0" encoding="utf-8"?><CD_LIST></CD_LIST>');
mergeFile2($target, "NewFile.xml");
mergeFile2($target, "NewFile1.xml");
mergeFile2($target, "NewFile2.xml");
$target->save("out2.xml");
創造...
<?xml version="1.0" encoding="utf-8"?>
<CD_LIST>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tylor</ARTIST>
<COUNTRY>UK</COUNTRY>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.