使用PHP我想更改属性是我指定的节点中的值。 XML文件:
<?xml version='1.0' standalone='yes'?>
<days>
<Maandag id="1">0</Maandag>
<Dinsdag id="2">0</Dinsdag>
<Woensdag id="3">0</Woensdag>
<Donderdag id="4">0</Donderdag>
<Vrijdag id="5">0</Vrijdag>
<Zaterdag id="6">0</Zaterdag>
<Zonday id="0">0</Zonday>
</days>
&#13;
例如: 今天是星期一所以jddayofweek(0)= 1 那么id = 1的节点的值需要改变,所以最后得到:
<?xml version='1.0' standalone='yes'?>
<days>
<Maandag id="1">3</Maandag>
<Dinsdag id="2">0</Dinsdag>
<Woensdag id="3">0</Woensdag>
<Donderdag id="4">0</Donderdag>
<Vrijdag id="5">0</Vrijdag>
<Zaterdag id="6">0</Zaterdag>
<Zonday id="0">0</Zonday>
</days>
&#13;
我如何在PHP中执行此操作?
答案 0 :(得分:1)
您可以使用DOMdocument
和DOMpath
更改它只需更改xml文件名data.xml
(2x)即可。设置$select
和$changeTo
。
<?php
//Set your variables
$select = 1; //id you'd like to change
$changeTo = 3; //value you would like to change to
//Creating a new DOMDocument
$xmlDoc = new DOMDocument();
//from file
$xmlDoc->load("data.xml");
//Creating a new DOMPath
$Xpath = new DOMXPath($xmlDoc);
//the query selects all Matches any element node (*) that have a "id" attribute with a value of $select
$results = $Xpath->query('*[@id=' . $select . ']');
//Change node
$results->item(0)->nodeValue = $changeTo;
//Save document
$xmlDoc->save("data.xml");
echo "Edited document saved!"
?>
答案 1 :(得分:0)
我推荐simpleXML
,因为它很好 - 简单:
$xml = simplexml_load_string($x); // assume XML in $x
$id = 1;
$day = $xml->xpath("*[@id=`$id`]")[0];
$day[0] = 5;
查看结果:
echo $xml->asXML();
评论:
xpath
- 表达式将按$id
选择日期并返回一系列SimpleXML
- 元素。 [0]
)并将其存储在$day
中(需要PHP&gt; = 5.4)看到它有效:https://eval.in/388827
进一步思考
如果你制作了这个XML,可以通过这样做来增加清晰度和灵活性:
<days>
<day name="Maandag" id="1">0</day>
<day name="Dinsdag" id="2">0</day>
<etc />
</days>
答案 2 :(得分:-1)
如果你的文件总是很小且内容相似(比如你的例子)你可以preg_replace()他们(或者str_replace())...最好的解决方案是编写你自己的XML解析器,这是一个很好的仪式 - 所有程序员的通道。