如何按属性修改 XML 节点


$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 更改为猴面包树(不使用 PHP 循环(?

当你按照你所说的方式使用 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';

最新更新