php - 如何使用 PHP 最好使用 SimpleXML 附加到 XML 文件

标签 php xml insert simplexml

我有一个如下所示的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<data>
    <config>
    </config>

    <galleries>
         // We have loads of these <gallery>
         <gallery>
             <name>Name_Here</name>
             <filepath>filepath/file.txt</filepath>
             <thumb>filepath/thumb.png</thumb>
         </gallery>
    </galleries>
</data>

我一直在想办法将另一个 附加到我上面的 xml 文件中。我尝试使用 simplexml 但无法让它工作,所以我在 stackoverflow 上尝试了这个 answer 以及其他人的 bunch。但是就是无法让它工作。
我可以轻松地从 xml 文件中读取并获取我需要的所有信息,但我需要能够向其附加一个画廊标签,下面的代码不起作用,当它起作用时,我只能插入 1 个元素,它会插入3 次,我不明白。

 $data = 'xml/config.xml';
 // Load document
 $xml = new DOMDocument;
 $xml->load( $data ); #load data into the element

 $xpath = new DOMXPath($xml);
 $results = $xpath->query('/data/galleries');
 $gallery_node = $results->item(0);

 $name_node = $xml->createElement('name');
 $name_text = $xml->createTextNode('nametext');

 $name_node = $name_node->appendChild($name_text);

 $gallery_node->appendChild($name_node);

 echo $xml->save($data);

我已经有很多失败的尝试了,这应该很容易。基本上,我想在同一个文件 (xml/config.php) 中添加一个带有子名称文件路径和缩略图的图库。

就像我说的,我有点让它工作,但它没有格式化并且没有 gallery 标签。

问题
如何在上述 XML 文件中插入另一个 (带有子项)?
甚至最好使用 simpleXML

最佳答案

借助 SimpleXML,您可以使用 addChild()方法。

$file = 'xml/config.xml';

$xml = simplexml_load_file($file);

$galleries = $xml->galleries;

$gallery = $galleries->addChild('gallery');
$gallery->addChild('name', 'a gallery');
$gallery->addChild('filepath', 'path/to/gallery');
$gallery->addChild('thumb', 'mythumb.jpg');

$xml->asXML($file);

请注意,SimpleXML 不会为您“格式化”XML,但是从未格式化的 SimpleXML 表示到整齐缩进的 XML 并不是一个复杂的步骤,这里有很多问题。

关于php - 如何使用 PHP 最好使用 SimpleXML 附加到 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7098093/

相关文章:

mysql - 插入行同时避免在 MySQL 中重复

php - HY093 : Wrong number of parameters - positional

php - 文件获取内容(): Peer certificate did not match

html - 没有特定类后代的所有元素的 XPath?

java - 如何从 Java 应用程序连接到在线 MySQL 数据库

java - 如何使用 Java Persistence API 创建简单的插入到 SQL Server

php - Mysql 在使用带有 SUM 方法和 if 条件的多个联接时出错?

php - 使用 Web 服务将报价导入 vtiger crm

html - 使用 XML 而不是 HTML 来创建网页更好吗?

SQL Server 使用通用字段元素生成 XML