使用 PHP 编辑 xml - 在最后一个之后插入
using PHP to edit xml - insert after last
所以我有这段代码,主要是通过回答此处提出的问题生成的。
我想在最后一个存在之后添加一个新的。
这是我的 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 );
我不确定我是否没有理解你的意思,但它对我来说如预期的那样有效?
正在查看 docs "The reference node. If not supplied, newnode is appended to the children."
所以,尽管它无论如何都是为我附加的,也许只是省略了第二个参数?
$root->insertBefore( $placemark );
(已将您的 xml 保存到 file.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>
所以我有这段代码,主要是通过回答此处提出的问题生成的。 我想在最后一个存在之后添加一个新的。 这是我的 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 );
我不确定我是否没有理解你的意思,但它对我来说如预期的那样有效?
正在查看 docs "The reference node. If not supplied, newnode is appended to the children."
所以,尽管它无论如何都是为我附加的,也许只是省略了第二个参数?
$root->insertBefore( $placemark );
(已将您的 xml 保存到 file.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>