PHP - SimpleXML - AddChild 与另一个 SimpleXMLElement

2024-01-14

我正在尝试构建一个相当复杂的 XML 文档。

我的 XML 文档中有很多重复的部分。我想我应该使用多个字符串模板作为这些部分的基础文档,并使用 simplexml_load_string 创建 XML 元素的实例。

所以我有一个 SimpleXMLElement 实例作为基础文档

$根= simplexml_load_string($template_root);

然后我循环访问数据库中的一些项目,创建新的 SimpleXMLElement,如下所示:

对于(布拉布拉布拉):

$item = simplexml_load_string($template_item); // 对 item 做一些事情 // 尝试将项目添加到根文档..
// 卡在这里.. 无法执行 $root->items->addChild($item)

endfor;

我无法调用 addChild,因为它只需要标签名称和值。您无法 addChild 另一个 SimpleXMLElement。

我在这里错过了什么吗? addChild 不能将 SimpleXMLELement 作为参数,这似乎很愚蠢。

还有其他方法可以做到这一点吗? (除了使用不同的 xml 库)


据我所知,你不能用 SimpleXML 做到这一点,因为addChild不会对元素进行深层复制(需要指定标签名称可以通过调用轻松克服SimpleXMLElement::getName()).

一种解决方案是使用 DOM:

有了这个功能:

function sxml_append(SimpleXMLElement $to, SimpleXMLElement $from) {
    $toDom = dom_import_simplexml($to);
    $fromDom = dom_import_simplexml($from);
    $toDom->appendChild($toDom->ownerDocument->importNode($fromDom, true));
}

我们有

<?php
header("Content-type: text/plain");
$sxml = simplexml_load_string("<root></root>");

$n1 = simplexml_load_string("<child>one</child>");
$n2 = simplexml_load_string("<child><k>two</k></child>");

sxml_append($sxml, $n1);
sxml_append($sxml, $n2);

echo $sxml->asXML();

输出

<?xml version="1.0"?>
<root><child>one</child><child><k>two</k></child></root>

另请参阅一些使用递归函数的用户评论和addChild, e.g. this one http://pt.php.net/manual/en/ref.simplexml.php#91561.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP - SimpleXML - AddChild 与另一个 SimpleXMLElement 的相关文章

  • 未捕获的异常“Google_IO_Exception”,消息为“HTTP 错误:无法连接”

    我有一个任务 查询 运行一些从 gmail 邮箱检索数据的 php 代码 直到上周五 2015 年 4 月 10 日 它一直工作正常 现在我收到以下错误日志 E 11 58 26 094 2015 04 15 200 3 38 KB 14
  • 使用PHP套接字发送和接收数据

    我正在尝试通过 PHP 套接字发送和接收数据 一切正常 但是当我尝试发送数据时 PHP 不发送任何内容 Wireshark 告诉我发送的数据长度为 0 我正在使用这段代码
  • 如何编写在正文中包含锚标记的 Zend Framework URL?

    使用 Zend Framework 中设置的标准 MVC 我希望能够显示始终具有锚点的页面 现在我只是在 phtml 文件中添加一个带有 anchor 的无意义参数
  • 如何从字符串中删除所有数字?

    我想删除字符串 0 9 中的所有数字 我写了这段有效的代码 words preg replace 0 words remove numbers words preg replace 1 words remove numbers words
  • PHP文件上传

    如果我想在文件名转到服务器的永久位置 而不是临时位置 之前更改文件名 我该如何执行此操作 代码如下
  • php下拉菜单人口

    我正在尝试编写一个 php 脚本 该脚本将根据主下拉菜单的选择填充第二个下拉菜单 我想使用 jquery 来完成所有非页面刷新的事情 但我发现现有的所有东西都很难理解和修改 你知道有什么写得很好且易于理解的东西吗 或者可能是现有的教程 下面
  • jquery上传完成后重定向到新页面

    我正在尝试让这个 jquery 工具与我的网站一起使用以进行文件上传 https github com blueimp jQuery File Upload https github com blueimp jQuery File Uplo
  • 如何处理 AJAX 请求中的会话超时

    我相信你们都熟悉使用 AJAX 的投票系统 嗯 看那边 我有类似的东西 当你投票赞成或反对时 它使用 AJAX 从 votes php 请求新值 问题是我正在使用会话来获取用户 ID 因此一个人只能投票一次 如果他们在页面上坐了一个小时然后
  • 如何在 Smarty 中打印 json

    我从 api 获取 json 如何使用 Smarty 打印 json Json格式 first name jinu last name mk loginid email protected cdn cgi l email protectio
  • 如何在 Twitter Card 中传递动态图像路径?

    我在用
  • Windows iis 7.0 上的 APC 不稳定

    我的 IIS 非常不稳定 因为它总是由于某种与 APC 相关的原因而重新启动 服务器的规格如下 Intel R Xeon CPU 3GHZ 3GHZ 2GB RAM 64bit APC 和服务器规格 3 1 7 dev PHP Versio
  • MySQL 数据库无法在 XAMPP for Mac 上启动

    突然我在 mac 上遇到了这个问题 我无法启动我的 MySQL 数据库 我只能启动 ProFTPD 和 Apache Web Server 这是应用程序日志 Starting all servers Starting MySQL Datab
  • 更改API数据输出的布局

    我是 API 集成和 PHP 的新手 我最近将 VIN 解码器集成到我的应用程序中 在输入框中输入车辆的 VIN 选择提交 然后就会显示 API 数据库中有关该车辆的所有信息 数据存储为关联数组 其中包含类别及其相应元素 例如 对于 VIN
  • 使用 PHP 和 OAuth 访问 SkyDrive

    我想使用 PHP 访问 skyDrive 我想检索文件和文件夹列表 下载 上传和删除文件 我有一个 microsoft dev clientID 和 clientSecret 有人可以帮助我开始使用 OAuth 连接到 skyDrive 并
  • HTML 代码中的 PHP [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我用 HTML 代码编写了 PHP div div 但这出现在输出页面中 else print 我怎样才能让PHP执行 你的文件有一个 p
  • 接口中的构造方法

    接口中的构造方法不好吗 为什么人们认为有人想要实例化接口 我们想要做的是强制实现者实现构造函数 就像其他接口方法一样 接口就像一个合同 假设我有一个接口 Queue 并且我想确保实现者创建一个带有一个参数的构造函数 该构造函数创建一个单例队
  • 合并 url 中的 2 个输入值

    我有这样的形式
  • Doctrine DQL 从 join 返回平面数组

    我通过 DQL 中的常规 LEFT JOIN 选择 3 个实体 它们通过连接表关联 连接表还定义了实体以及带注释的关系 查询执行没有问题 但我的结果作为平面数组返回 我期望一个包含三个实体作为每个索引的数组元素的数组 SELECT e1 e
  • 谷歌日历手表过期时间超过1个月怎么办?

    我将我的 CRM 系统与 Google 日历同步 为此 我要求push notifications从我的用户 Google 日历到我的系统 我已经成功创建了手表 并将过期时间设置为2030年 但是当我收到手表事件的响应时 它显示手表的过期时
  • 如何在 PHP 中从字符串类名实例化? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何创建返回方法名称的新实例 不幸的是我收到这个错误 错误 类名必须是有效的对象或字符串 这是我的代码 class Foo public f

随机推荐

  • 快速数字格式化

    我刚刚开始了解 Swift 但我在极其基础的数字格式化方面遇到了严重的问题 例如 我需要显示至少 2 位数字的整数 例如 00 01 02 03 04 05 我期望的正常语法是这样的 println 02i 02i 02i var1 var
  • 非 LL(1) 的 LL(2) 语言

    为了进一步了解解析器和语法 我正在寻找一个 希望简单的 示例language即 LL 2 但不是 LL 1 也就是说 可以由 LL 2 语法生成但不能由任何 LL 1 语法生成的语言 该课程中有有用的语言吗 也就是说 我们可以想象一种 LL
  • WOW.js 无法与 Wordpress 正常工作

    所以我试图让 wow js 和 Animate css 在我的 WordPress 模板上工作 我已经将它们全部链接得很好 它不会引发任何错误 并且动画确实有效 但由于某种原因 动画是在页面加载时触发的 而不是在页面滚动时触发的 效果是所有
  • 如何使用mysql join更新记录?

    在我的 mysql 中 我有 t1 t2 表 我想根据 t1 的字段值与 t2 的字段值匹配 从 t2 的字段值更新 t1 的字段 我尝试了以下但它没有更新 我在这里做错了什么 UPDATE t1 INNER JOIN t2 ON t1 n
  • Sinon-chai CalledWith(new Error()) 并带有确切的消息

    我需要测试这个功能 user js function getUser req res next helper get user param1 param2 err file gt if err return next err 这是我的测试功
  • 如何找到我自己的 Facebook ID? (不是应用程序范围的 ID)

    我以前可以访问我的 Facebook 个人资料页面https www facebook com https www facebook com 用户名 并将 www 替换为 graph https graph facebook com htt
  • Swift 中的 CocoaLumberjack,如何打印行号和文件名称

    我是 CocoaLumberjack 的新手 我让它在 Swift 上工作如下this https github com CocoaLumberjack CocoaLumberjack issues 405 如果我尝试打印日志 DDLogD
  • POM 中的多个依赖范围

    我的 POM 中有一个依赖项 需要将其设置为 提供 因此它不会包含在编译中 但仍然可以在我的项目中引用 当我去运行测试时 我希望相同的依赖项具有 测试 范围 这样我就不必手动将 jar 添加到我的类路径中 有没有办法做到这一点或达到类似的结
  • 在 lm lapply 调用列表中使用权重参数[重复]

    这个问题在这里已经有答案了 这是我的问题 为了可重现而虚构的数据 set seed 42 df lt data frame x rnorm 1000 y rnorm 1000 z rnorm 1000 df2 lt data frame x
  • CMake 和处理子文件夹头文件

    我正在尝试设置我的项目来构建几个包含其完整功能的动态库 每个库都有子文件夹 子文件夹库相互依赖 因此它们必须相互引用函数 我似乎已经成功地让 CMake 在项目上运行而没有错误 但是当我去构建时 我的标头无法找到彼此 似乎在构建时 包含路径
  • 带 Flux 的错误处理程序

    我有一个 React js 应用程序 正在重构它以使用 Flux 架构 并且正在努力弄清楚错误处理在坚持 Flux 模式的同时应该如何工作 目前 当遇到错误时 会触发 jQuery 事件 AppError 并且订阅此事件的通用错误处理助手会
  • 在同一图中绘制不同颜色的波[重复]

    这个问题在这里已经有答案了 如何在 matlab 中绘制具有不同颜色的波 由 1 x N 矩阵表示 可以手动提供特定颜色的范围 有关预期输出 请参见下图 这是一个简单的选项 x linspace 4 pi 4 pi 10000 some d
  • 连接两个邻接矩阵并保留值

    下列的这个问题 https stackoverflow com questions 46295687 r how to make 2 adjacency matrices compatible to eachother 是否可以连接两个邻接
  • Python 2.7,PIP:“构建轮子失败......”

    第一次使用pip 尝试使用python docs samples 教程库 https github com GoogleCloudPlatform python docs samples 当我运行 python m pip install
  • UIView-Encapsulated-Layout 与 UIViewController 中的 UICollectionView 嵌入视图中

    由于某种原因 在嵌入的视图控制器内使用集合视图会在集合视图约束上引发 UIView Encapsulated Layout 我无法设置高度或顶部 底部边距 关于为什么会发生这种情况有什么想法吗 我一直在通过故事板添加约束 我什至尝试以编程方
  • 如何在 div 中间对齐旋转文本

    我想将旋转文本垂直对齐在 100 高度 div 的中间 如下图所示 因此 每当屏幕尺寸发生变化时 文本都会保留在 div 的中间 有人有解决方案吗 http jsfiddle net SVkPU 1 http jsfiddle net SV
  • 检查 Excel 中的组合?

    我有两道多项选择题 有 9 种可能的选择 总共有 20 种答案组合 每个组合都被分配一个值 在 Excel 中 我需要检查不同组合的答案并告诉我该组合的值 这怎么可能 我需要使用什么公式 问答示例 可能的答案 这是我尝试过的方法 它有效 但
  • 如何加快file_get_contents的速度?

    这是我的代码 language GET soundtype word GET sound word urlencode word if language english url
  • 使用 Ransack gem 进行复选框搜索

    我需要过滤表中的数据 为此 我发现元搜索 https github com ernie meta search宝石 我安装了 meta search 并收到此错误 uninitialized constantActiveRecord Ass
  • PHP - SimpleXML - AddChild 与另一个 SimpleXMLElement

    我正在尝试构建一个相当复杂的 XML 文档 我的 XML 文档中有很多重复的部分 我想我应该使用多个字符串模板作为这些部分的基础文档 并使用 simplexml load string 创建 XML 元素的实例 所以我有一个 SimpleX