gpt4 book ai didi

PHP 简单 XML : insert node at certain position

转载 作者:可可西里 更新时间:2023-10-31 22:42:18 26 4
gpt4 key购买 nike

假设我有 XML:

<root>
<nodeA />
<nodeA />
<nodeA />
<nodeC />
<nodeC />
<nodeC />
</root>

如何在 As 和 Cs 之间插入“nodeB”?在 PHP 中,最好通过 SimpleXML?喜欢:

<root>
<nodeA />
<nodeA />
<nodeA />
<nodeB />
<nodeC />
<nodeC />
<nodeC />
</root>

最佳答案

以下是在其他一些 SimpleXMLElement 之后插入一个新的 SimpleXMLElement 的函数。由于使用 SimpleXML 无法直接做到这一点,因此它使用了一些 DOM。完成工作的幕后类/方法。

function simplexml_insert_after(SimpleXMLElement $insert, SimpleXMLElement $target)
{
$target_dom = dom_import_simplexml($target);
$insert_dom = $target_dom->ownerDocument->importNode(dom_import_simplexml($insert), true);
if ($target_dom->nextSibling) {
return $target_dom->parentNode->insertBefore($insert_dom, $target_dom->nextSibling);
} else {
return $target_dom->parentNode->appendChild($insert_dom);
}
}

以及如何使用它的示例(针对您的问题):

$sxe = new SimpleXMLElement('<root><nodeA/><nodeA/><nodeA/><nodeC/><nodeC/><nodeC/></root>');
// New element to be inserted
$insert = new SimpleXMLElement("<nodeB/>");
// Get the last nodeA element
$target = current($sxe->xpath('//nodeA[last()]'));
// Insert the new element after the last nodeA
simplexml_insert_after($insert, $target);
// Peek at the new XML
echo $sxe->asXML();

如果您想要/需要解释如何这是如何工作的(代码相当简单,但可能包含外国概念),尽管问。

关于PHP 简单 XML : insert node at certain position,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3361036/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com