【发布时间】:2011-09-14 10:29:49
【问题描述】:
使用 SimpleXML,可以通过键入例如“即时”添加/更改/删除选定节点的属性
$child->addAttribute('n', $occ_order);
有没有办法改变 $child 元素的名称?我希望像
$child->setName('newTagName');
但我在 API 中找不到对应的函数。
提前感谢您的提示!
【问题讨论】:
使用 SimpleXML,可以通过键入例如“即时”添加/更改/删除选定节点的属性
$child->addAttribute('n', $occ_order);
有没有办法改变 $child 元素的名称?我希望像
$child->setName('newTagName');
但我在 API 中找不到对应的函数。
提前感谢您的提示!
【问题讨论】:
从文档 [1] 看来您不能。如果你也可以的话,那会有点奇怪 - 更改名称使其成为不同/新元素。您要做的是删除该元素并在同一位置添加一个新元素。然而,虽然有一个 addChild 方法,但它看起来不像有一个 delete 方法。所以也许 simpleXML 在这里不是合适的工具。
编辑: 实际上 simpleXML 不提供删除方法。有关如何执行此操作的信息,请参阅此答案[2]。
1 http://php.net/manual/en/book.simplexml.php
2Remove a child with a specific attribute, in SimpleXML for PHP
【讨论】:
如果您确切知道它的位置,则可以使用unset() 将其删除,即$main->target 将被删除为unset($main->target),然后使用addchild() 再次添加它,即$main->addchild(name, value)。
【讨论】: