php - SimpleXMLElement - addChild 实例
问题描述
我有 2 个 SimpleXmlElement 实例,例如:
$xmlMain = new SimpleXmlElement('<user><name></name></user>');
$xmlPart = new SimpleXmlElement('<user_details...</user_details>');
我可以$xmlPart
在里面的某处插入元素吗$xmlMain
?
我希望结果是在$xmlPart
里面注入实例$xmlMain
,所以结果是
<user><name><user_details>...</user_details></name></user>
解决方案
SimpleXML 不太擅长将数据从一个节点复制到另一个节点。您可以改为使用 DOMDocument 方法,首先将 SimpleXMLElements 导入 DOMNodes,然后将第二个节点导入到第一个节点的文档中,然后将其附加到 name 元素...
$xmlMain = new SimpleXmlElement('<user><name></name></user>');
$xmlPart = new SimpleXmlElement('<user_details>...</user_details>');
// Import xmlMain <name> element into a DOMNode
$xmlMD = dom_import_simplexml($xmlMain->name);
// Import xmlPart into DOMNode and then import that node into the xmlMD document
$importedNode = $xmlMD->ownerDocument->importNode(dom_import_simplexml($xmlPart), true);
// Add the imported node into the first node (the <name> element)
$xmlMD->appendChild($importedNode);
echo $xmlMain->asXML();
这会给...
<?xml version="1.0"?>
<user><name><user_details>...</user_details></name></user>
另一种可能更简单的方法是首先在文档中创建$xmlPart
元素......$xmlMain
$xmlMain = new SimpleXmlElement('<user><name></name></user>');
$userDetails = $xmlMain->name->addChild("user_details");
$userDetails->addChild("name", "Fred");
echo $xmlMain->asXML();
创造...
<?xml version="1.0"?>
<user><name><user_details><name>Fred</name></user_details></name></user>
推荐阅读
- angular - 为什么角度生命周期钩子看起来是同步的
- server - ModbusTCP:逆向工程,没有客户端(主)的任何文件
- java - (Spring boot + Java) 大于 1 GB 文件的下载 API
- django - 在 Elastic Beanstalk 上使用 Django 2.2 时出现 WSGI 错误
- android - takePicture 需要 CameraX (1.0.0-alpha06) 上的执行器
- docker - 如何运行私有 Docker 映像
- python - 我无法打开我的本地服务器。我做了待办事项清单
- scala - 重复记录移动到 Spark Scala 中的其他数据帧
- css - 带边距顶部的 css 选择选项
- node.js - 需要在我的 Ubuntu 操作系统中使用 nodejs 运行单独的 power shell 脚本