Я хочу изменить свой 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"); ?>