我正在使用 PHP curl 从远程 url 检索 xml 文件并将其保存到我服务器上的本地文件中。结构如下:
<Store Country="Ireland">
<EventsPoints>
<Event ID="1800" >
<ArtistIDs>
<ArtistID ID="109" Type="Primary" />
</ArtistIDs>
<CategoryID>1</CategoryID>
<Country>IRL</Country>
<PerformanceName>Music and Arts</PerformanceName>
<VenueID ID="197" />
</Event>
<Venues>
<Venue ID="197">
<City>Dublin</City>
<Country>IRL</Country>
<VenueName>ABC</VenueName>
<VenueNumber>22</VenueNumber>
</Venue>
</Venues>
上述 xml 块存储在同一个 XML 文件中。有几个 Event 块和几个 Venue 块。我遇到的问题是使用 PHP 访问这个大型 XML 文件并遍历 Venue 块,仅检索具有通过参数指定的特定 ID 的 Venue 块。然后我想遍历事件块 - 仅检索与此指定场地 ID 匹配的事件。然后我想将其保存到服务器上的文件中。我想为每个场地都这样做。
我该如何进行上述操作?
编辑:
对于与该场地相关的每个场地和活动,我只想将它们复制到自己的文件中 - 基本上将较大的文件拆分为单独的文件
$docSource = new DOMDocument();
$docSource->loadXML($xml);
$docDest = new DOMDocument();
$docDest->loadXML(file_get_contents('/var/www/html/xml/testfile.xml'));
$xpath = new DOMXPath($docSource);
$id = "197";
$result = $xpath->query('//Event/VenueID[@ID=$id]')->item(0); //Get directly the node you want
$result = $docDest->importNode($result, true); //Copy the node to the other document
$items = $docDest->getElementsByTagName('items')->item(0);
$items->appendChild($result); //Add the copied node to the destination document
echo $docDest->saveXML();