我使用XPath查詢XML文檔,然後找到節點複製到一個單獨的結果xml文件,但是我遇到的問題是,在頂部的XML聲明被每一次新的節點加入添加到結果文件中。PHP的XML輸出串聯
這裏是我的PHP代碼:
$allEventsForVenue = $xPath->query(
"/Ticket/EventsPoints/Event[contains(PerformanceName,'$searchParam')]"
);
foreach ($allEventsForVenue as $event) {
$dstDom = new DOMDocument('1.0', 'utf-8');
$dstDom->appendChild($dstDom->createElement('EventsPoints'));
$dstDom->documentElement->appendChild($dstDom->importNode($event, true));
//echo $dstDom->saveXml();
$dstDom->formatOutput = true;
$strxml .= $dstDom->saveXML();
$handle = fopen("/var/www/html/xml/searchresults$searchID.xml", "w");
fwrite($handle, $strxml);
fclose($handle);
}
無效的XML文件(兩個XML在一個文件中聲明):
->> <?xml version="1.0" encoding="utf-8"?>
<EventsPoints>
<Event ID="17">
<PerformanceName>Bressie</PerformanceName>
<PresaleTime/>
<PriceRange>17 - 17</PriceRange>
<VenueID ID="19"/>
</Event>
</EventsPoints>
->> <?xml version="1.0" encoding="utf-8"?>
<EventsPoints>
<Event ID="180">
<PerformanceName>U2</PerformanceName>
<PriceRange>20 - 20</PriceRange>
<VenueID ID="198"/>
</Event>
</EventsPoints>
- 反覆'fopen'和'fclose'會降低性能。 –
謝謝,但有什麼辦法只運行這一行:$ dstDom = new DOMDocument('1.0','utf-8'); 曾經(在第一個循環) – user1417302
檢查我的答案。我只創建了一次DOMDocument。並在其中重複添加元素,然後將其寫入文件。 –