SimpleXML - 将 SimpleXML 类型的变量分配给 child 元素?
SimpleXML - assigning variable of type SimpleXML to child Element?
我正在尝试 'overwrite' 一个带有 SimpleXMLElement 变量的 child。
我的XML是
<data>
<ch>
<nest>plzoverwritekthx</nest>
</ch>
</data>
我的 PHP 尝试是:
$DATA=(new SimpleXMLElement("<data><ch><nest>plzoverwritekthx</nest></ch></data>"));
$DATA->children()[0]->children()[0]=(new SimpleXMLElement("<dragon>x</dragon>"));
exit($DATA->asXML())
预期输出:
<?xml version="1.0"?>
<data><ch><dragon>x</dragon></ch></data>
实际输出:
<?xml version="1.0"?>
<data><ch>x</ch></data>
我可以防止将新节点转换为字符串吗?
class SimpleXMLElement 没有 replaceChild()
或 overrideChild()
方法。所以解决方案是:
- 首先从 XML 文档中删除节点
<nest>plzoverwritekthx</nest>
。
- 然后使用SimpleXMLElement的
addChild()
方法class添加合适的节点,<dragon>x</dragon>
所以你的代码应该是这样的:
$data=<<<XML
<data>
<ch>
<nest>plzoverwritekthx</nest>
</ch>
</data>
XML;
$xml = new SimpleXMLElement($data);
// Remove node: <nest>plzoverwritekthx</nest>
unset($xml->children()[0]->children()[0]);
// Add node: <dragon>x</dragon>
$xml->children()[0]->addChild('dragon', 'x');
// display
exit($xml->asXML());
输出:
<?xml version="1.0"?>
<data><ch><dragon>x</dragon></ch></data>
我正在尝试 'overwrite' 一个带有 SimpleXMLElement 变量的 child。
我的XML是
<data>
<ch>
<nest>plzoverwritekthx</nest>
</ch>
</data>
我的 PHP 尝试是:
$DATA=(new SimpleXMLElement("<data><ch><nest>plzoverwritekthx</nest></ch></data>"));
$DATA->children()[0]->children()[0]=(new SimpleXMLElement("<dragon>x</dragon>"));
exit($DATA->asXML())
预期输出:
<?xml version="1.0"?>
<data><ch><dragon>x</dragon></ch></data>
实际输出:
<?xml version="1.0"?>
<data><ch>x</ch></data>
我可以防止将新节点转换为字符串吗?
class SimpleXMLElement 没有 replaceChild()
或 overrideChild()
方法。所以解决方案是:
- 首先从 XML 文档中删除节点
<nest>plzoverwritekthx</nest>
。 - 然后使用SimpleXMLElement的
addChild()
方法class添加合适的节点,<dragon>x</dragon>
所以你的代码应该是这样的:
$data=<<<XML
<data>
<ch>
<nest>plzoverwritekthx</nest>
</ch>
</data>
XML;
$xml = new SimpleXMLElement($data);
// Remove node: <nest>plzoverwritekthx</nest>
unset($xml->children()[0]->children()[0]);
// Add node: <dragon>x</dragon>
$xml->children()[0]->addChild('dragon', 'x');
// display
exit($xml->asXML());
输出:
<?xml version="1.0"?>
<data><ch><dragon>x</dragon></ch></data>