我想根据以下条件在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文件中。
现在,当再次搜索酒店时,它将删除具有带有值酒店的子元素的元素。
然后在与学校相关的数据附加到xml文件时,进行针对学校的不同查询。与酒店的数据。
现在再次搜索学校已完成,然后将删除与学校相关的元素。
提前致谢。
您可以使用 DOM文档 从 PHP 。
您加载文件,然后遍历文档的 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 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();
});
问题内容: 我有一个XML文档,在它已经包含数据之后,我想对其进行更新。 我考虑过要在(附加)模式下打开XML文件。问题在于新数据将在根结束标记之后写入。 如何删除文件的最后一行,然后从该点开始写入数据,然后关闭根标签? 当然,我可以读取整个文件并进行一些字符串操作,但是我认为这不是最好的主意。 谢谢你的时间。 问题答案: 您绝对 不应该做 的快速简便的方法(请参阅下文)是使用来将整个文件读入字符
例子 (Demo Example) 这是我们需要修改的XML - <?xml version = "1.0"?> <class> <student rollno = "393"> <firstname>dinkar</firstname> <lastname>kad</lastname> <nickname>dinkar</nickname>
XPath parser is used to navigate XML Documents only. It is better to use DOM parser for modifying XML. Please refer the Java DOM Parser section for the same.
例子 (Demo Example) 这是我们需要修改的XML - <?xml version = "1.0"?> <class> <student rollno = "393"> <firstname>dinkar</firstname> <lastname>kad</lastname> <nickname>dinkar</nickname>
例子 (Demo Example) 这是我们需要修改的输入文本文件 - <?xml version = "1.0" encoding = "UTF-8" standalone = "no"?> <cars> <supercars company = "Ferrari"> <carname type = "formula one">Ferrari 101</carname>
例子 (Demo Example) 这是我们需要通过在 marks>标记的末尾附加 Pass 来修改的输入XML文件。 <?xml version = "1.0"?> <class> <student rollno = "393"> <firstname>dinkar</firstname> <lastname>kad</lastname> <nickna