我在设置XML标记的值/属性时遇到了问题。 这是我的PHP代码:
$f=simplexml_load_file("String.xml");
$f2=$f->imgdir;
foreach($f2 as $imgdir)
{
$st=$imgdir->string;
foreach($st as $str)
{
$fd=$str->attributes();
$fd['value']='New Value';
}
}
$f->asXML("String.xml");
这是我的String.xml文件的内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<imgdir name="Cash.img">
<imgdir name="5000011">
<string name="name" value="Monkey"/>
<string name="desc" value="A lovely effect that shows a baby angel floating around as your protector. Designate a HotKey to turn the effect on/off."/>
</imgdir>
<imgdir name="5010000">
<string name="name" value="Sunny Day"/>
<string name="desc" value="A special effect in which you'll see a brightly smiling sun floating over you. On the KeyConfig, configure this on a button of your choice to turn the effect on/off."/>
</imgdir>
</imgdir>
如何更改每个<string>
标记的value属性并保存XML文件?我现在的代码该怎么办?
感谢您阅读我的问题!
答案 0 :(得分:0)
<强>基本强>
我建议您使用<string>
选择所有xpath
个节点:
$xml = simplexml_load_string($x); // assume XML in $x
$strings = $xml->xpath("//string");
上述语句会将所有<string>
个节点选为SimpleXml
元素到数组中
//string
中的双斜线将<string>
,无论它们在树中的位置如何。
现在迭代$strings
并设置新值很简单:
foreach ($strings as $string)
$string["value"] = "new value";
请注意,应用于$strings
的更改发生在$xml
中,因此:
echo $xml-asXML();
将显示更改。
<强>扩展强>
当然,您可能只想选择某些<string>
个节点,例如都有name="name"
。在这种情况下,您可以告诉xpath
:
$strings = $xml->xpath("//string[@name='name']");
请注意[]
和@name
中设置的条件,并引用attribute
名称。