gpt4 book ai didi

php - 如何使用PHP修改xml文件

转载 作者:IT王子 更新时间:2023-10-29 00:01:07 29 4
gpt4 key购买 nike

我想根据以下条件用 PHP 修改我的 xml 文件。

我的 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属性。

表示,在第一次搜索字符串 == "hotels"时,与酒店相关的数据将按上述格式存储在 xml 文件中。

现在,当再次完成酒店搜索时,它将删除具有值(value)酒店的子元素的元素。

并搜索不同的查询,例如schools 是在那时完成的,与学校相关的数据被附加到 xml 文件中。与酒店的数据。

现在再次完成学校搜索,然后它将删除与学校相关的元素。

提前致谢。

最佳答案

您可以使用 PHP 中的 DOMDocument

您加载您的文件,然后循环遍历文档的 childNodes

<?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 代码存储库中包含该库。

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

该库是跨浏览器的,而且非常小。它在很多情况下应该被缓存,因为一些网站从 Google 代码中使用它

$(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();
});

关于php - 如何使用PHP修改xml文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1193528/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com