Как изменить файл xml с помощью PHP

Я хочу изменить свой XML-файл в PHP на основе следующих критериев.

моя структура xml выглядит так:

<?xml version="1.0" encoding="ISO-8859-1" ?> <markers> <marker> <type></type> <title></title> <address></address> <latitude></latitude> <longitude></longitude> <marker> <marker> <type></type> <title></title> <address></address> <latitude></latitude> <longitude></longitude> <marker> </markers> 

Теперь каждый раз, когда xml собирается модифицировать, с атрибутом type.

означает, что в первый раз поисковая строка == «отели» тогда данные, связанные с гостиницами, будут храниться в XML-файле, как указано выше.

Теперь, когда снова поиск отелей будет завершен, он удалит элементы, у которых есть детский элемент со стоимостью отелей.

и поиск другого запроса, например, в школах, делается в это время к файлам xml добавляются данные, относящиеся к школам. с данными отелей.

теперь снова поиск школ осуществляется, тогда он удалит элемент, связанный со школами.

Заранее спасибо.

Вы можете использовать DOMDocument из PHP .

Вы загружаете файл, а не через петлю через дочерние узлы документа.

 <?php $dom=new DOMDocument(); $dom->load("file.xml"); $root=$dom->documentElement; // This can differ (I am not sure, it can be only documentElement or documentElement->firstChild or only firstChild) $nodesToDelete=array(); $markers=$root->getElementsByTagName('marker'); // Loop trough childNodes foreach ($markers as $marker) { $type=$marker->getElementsByTagName('type')->item(0)->textContent; $title=$marker->getElementsByTagName('title')->item(0)->textContent; $address=$marker->getElementsByTagName('address')->item(0)->textContent; $latitude=$marker->getElementsByTagName('latitude')->item(0)->textContent; $longitude=$marker->getElementsByTagName('longitude')->item(0)->textContent; // Your filters here // To remove the marker you just add it to a list of nodes to delete $nodesToDelete[]=$marker; } // You delete the nodes foreach ($nodesToDelete as $node) $node->parentNode->removeChild($node); echo $dom->saveXML(); ?> 

Вы можете сохранить свой выходной XML следующим образом:

 $dom->saveXML(); // This will return the XML as a string $dom->save('file.xml'); // This saves the XML to a file 

Для этого в JavaScript необходимо использовать jQuery (небольшая, но мощная библиотека).

Вы можете включить библиотеку непосредственно из Репозитория Google Code.

 <script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script> 

Библиотека кросс-браузерная и очень маленькая. Его следует кэшировать во многих случаях, поскольку некоторые сайты используют его в Google Code

 $(yourXMLStringOrDocument).find("marker").each(function () { var marker=$(this); var type=marker.find('type').text(); var title=marker.find('title').text(); var address=marker.find('address').text(); var latitude=marker.find('latitude').text(); var longitude=marker.find('longitude').text(); }); 

Document Object Model (DOM) – это ответ.

 <? $dom=new DomDocument(); $dom->Load("file.xml"); $root=$dom->documentElement; ... $dom->Save("file.xml"); ?>