php - 使用 PHP 编辑 xml - 最后插入
问题描述
所以我有这段代码,主要是由这里提出的问题的答案生成的。我想在最后一个存在之后添加一个新的。这是我的 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 保存到 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>
推荐阅读
- android - 如何每 24 小时更新一次 Android SQLite 数据库?
- hive - 将 Hive MultiSerde 中的记录插入 Hive 中的 Parquet 表
- excel - 双击工作表中的单元格以在另一个工作表中生成过滤数据
- python - 如何在 python-docx 中突出显示标题
- ruby-on-rails - dry-rails 如何使用合同验证
- python - 如何在python中计算椭圆和直线的交点?
- javascript - 控制台日志可以使用哪些字体
- sass - 如何使用 Sass 预加载字体
- visual-studio-code - Jupyter:更改输出单元格大小
- devops - 保护 bambo.yml 中用户提供的服务的凭据