使用 PHP 编辑最后插入



所以我有这段代码,它主要由这里提出的问题的答案生成。 我想在最后一个现有之后添加一个新。 这是我的XML代码示例(有很多地标(:

<Folder>
<Placemark>
<name><![CDATA[scscsc]]></name>
<description><![CDATA[Description:ascasc<c,ascascasc<br>]]></description>
<styleUrl>#placemark-brown</styleUrl>
<ExtendedData>
</ExtendedData>
<Point>
<coordinates>24.069631625000056,-23.784080251008078,0</coordinates>
</Point>
</Placemark>
</Folder>

我目前在 PHP 中拥有的是将新的插入到最后一个之前,我希望它在最后一个之后。 PHP代码:

// find the Folder tag
$root = $xmldoc->getElementsByTagName('Folder')->item(0);
// create the <placemark> tag
$placemark = $xmldoc->createElement('Placemark');
// add the placemark tag After the last element in the <Folder> tag
$root->insertBefore( $placemark, $root->lastChild );

我不确定我是否错过了你的意思,但它对我来说按预期工作?

查看文档"引用节点。如果没有提供,newnode将附加到子节点。

所以,虽然它无论如何都为我附加了,也许只是省略了第二个参数?

$root->insertBefore( $placemark );

(已将 xml 保存到文件中.xml(

$xmldoc = new DOMDocument();
$xmldoc->load("file.xml");
// find the Folder tag
$root = $xmldoc->getElementsByTagName('Folder')->item(0);
// create the <placemark> tag
$placemark = $xmldoc->createElement('Placemark');
// add the placemark tag After the last element in the <Folder> tag
$root->insertBefore( $placemark );
$xmldoc->save('file.xml', LIBXML_NOEMPTYTAG);

其中输出以下内容

<?xml version="1.0"?>
<Folder>
<Placemark>
<name><![CDATA[scscsc]]></name>
<description><![CDATA[Description:ascasc<c,ascascasc<br>]]></description>
<styleUrl>#placemark-brown</styleUrl>
<ExtendedData>
</ExtendedData>
<Point>
<coordinates>24.069631625000056,-23.784080251008078,0</coordinates>
</Point>
</Placemark>
<Placemark></Placemark>
</Folder>

最新更新