您可以使用任何語言,允許您直接操縱xml。我建議用DOM而不是SAX找到一些東西。如果你使用SAX,你必須自己遍歷xml--這是我的經驗。 DOM允許您以更多的OOP方式對xml進行操作。
一些立即跳入腦海的東西將是xml「文檔」的包裝xml。
因此,像:
<documents>
<document>
<!-- Your xml here -->
</document>
<document>
<!-- Your xml here -->
</document>
<document>
<!-- Your xml here -->
</document>
</documents>
僞代碼將是: 創建文檔根目錄。 添加一個名爲documents的元素,將其用作根。 迭代每個xml文件。 爲每個文件創建一個名爲document的新元素。將該元素添加到父級。從文件加載xml。將該節點導入外部文檔。將導入的節點附加到文檔元素子集合中。
編輯 如這裏承諾的是更新的代碼進行了測試,我知道作品:
<?php
// Replace the strings below with the actual filenames, add or decrease as fit
$filenames = array(0 => "test.xml", 1 => "test2.xml", 2 => "test3.xml");
$docList = new DOMDocument();
$root = $docList->createElement('documents');
$docList->appendChild($root);
foreach($filenames as $filename) {
$doc = new DOMDocument();
$doc->load($filename);
$xmlString = $doc->saveXML($doc->documentElement);
$xpath = new DOMXPath($doc);
$query = "//product"; // this is the name of the ROOT element
$nodelist = $xpath->evaluate($query, $doc->documentElement);
if($nodelist->length > 0) {
$node = $docList->importNode($nodelist->item(0), true);
$xmldownload = $docList->createElement('document');
$xmldownload->setAttribute("filename", $filename);
$xmldownload->appendChild($node);
$root->appendChild($xmldownload);
}
}
echo $docList->saveXML();
?>
來源
2011-05-06 20:06:46
SRM
好問題,+1。查看我的答案,獲得一個簡潔而又簡單的純XSLT解決方案。 :) – 2011-05-07 02:56:16