使用 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>