$xmlStr = '<?xml version="1.0" encoding="utf-8"?>
<players>
<string name="Paul">Foo</string>
<string name="Peter">Bar</string>
</players>';
$xml = new SimpleXML($xmlStr);
如何在SimpleXML对象中将Foo更改为Baobab(不使用PHP循环)?
答案 0 :(得分:1)
当您使用XPath时,它会返回一个数组。由于这是您要更改的第一项,因此请使用[0]
。
要更新值,您必须让SimpleXML知道您要设置元素的值,最简单的方法是使用(在本例中)$foo[0]
。虽然$foo
不是一个数组,但它会欺骗SimpleXML设置元素的值,而不是为名为$foo
的变量赋值。
$xmlStr = '<?xml version="1.0" encoding="utf-8"?>
<players>
<string name="Paul">Foo</string>
<string name="Peter">Bar</string>
</players>';
$xml = new SimpleXMLElement($xmlStr);
$foo = $xml->xpath('//string[@name="Paul"]')[0];
$foo[0] = 'Baobab';
echo $xml->asXML();
如果你知道这总是XML的布局,你可以做......
$xml->string[0] = 'Baobab';