PHP SimpleXML如何添加子节点和属性 addChild

发布时间 - 2026-01-28 00:00:00    点击率:
PHP SimpleXML 中添加子节点和属性需用 addChild() 和 addAttribute() 方法,作用于 SimpleXMLElement 对象; addChild() 创建子元素并支持链式调用,自动转义文本内容; addAttribute() 为已有元素添加属性,属性值自动转义但属性名不校验合法性。

PHP SimpleXML 中添加子节点和属性,主要用 addChild()addAttribute() 两个方法。它们操作的是 SimpleXMLElement 对象,不能直接对字符串或普通数组调用。

添加子节点(使用 addChild)

addChild() 用于向当前元素追加一个子元素。它返回新创建的子节点对象,支持链式调用。

  • 基本语法:$child = $parent->addChild('tagName', 'textContent');
  • 若只传标签名,会创建空元素:$elem->addChild('price');
  • 传内容时自动转义特殊字符(如 & 变成 &),无需手动处理
  • 支持链式添加深层结构:$xml->addChild('book')->addChild('title')->addChild('em')->addAttribute('class', 'highlight')->addChild('text', 'PHP Guide');

添加属性(使用 addAttribute)

addAttribute() 必须在已有元素上调用,不能对文档根直接使用(除非已获取到根元素对象)。

  • 语法:$element->addAttribute('name', 'value');
  • 可多次调用添加多个属性:$item->addAttribute('i

    d', '123')->addAttribute('type', 'digital');
  • 属性值会被自动转义,但属性名不会校验合法性(非法名可能导致生成无效 XML)
  • 不支持命名空间前缀的直接写法(如 xs:type),需用第三个参数指定命名空间 URI

常见组合操作示例

构建一个带属性和文本内容的完整节点:

$xml = simplexml_load_string('');
$item = $xml->addChild('product');
$item->addAttribute('sku', 'P1001');
$item->addAttribute('in_stock', 'true');
$item->addChild('name', 'Wireless Mouse');
$price = $item->addChild('price');
$price->addAttribute('currency', 'USD');
$price->addChild('value', '29.99');

结果 XML 片段:


  Wireless Mouse
  29.99

注意事项和避坑点

SimpleXML 是只读式对象模型,所有修改都作用于内存中的副本;保存需显式调用 asXML()saveXML() 输出。

  • 不能用 addChild() 向字符串或 null 添加子节点,会报致命错误
  • 如果父节点是查询结果(如 $xml->item[0]),确保索引存在,否则返回 false 导致后续调用失败
  • 中文等 UTF-8 内容需确保源 XML 声明含 encoding="UTF-8",否则输出可能乱码
  • 要插入未转义的 HTML 或 CDATA,SimpleXML 不原生支持,需改用 DOMDocument


# php  # html  # git  # NULL  # 命名空间  # xml  # simpleXML  # 字符串  # class  # 对象  # 链式  # 已有  # 会报  # 作用于  # 的是  # 需用  # 多个  # 不支持  # 不能用  # 第三个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 电商网站制作价格怎么算,网上拍卖流程以及规则?  EditPlus中的正则表达式 实战(1)  利用JavaScript实现拖拽改变元素大小  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  如何确认建站备案号应放置的具体位置?  晋江文学城电脑版官网 晋江文学城网页版直接进入  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  简单实现jsp分页  bootstrap日历插件datetimepicker使用方法  如何在自有机房高效搭建专业网站?  高端企业智能建站程序:SEO优化与响应式模板定制开发  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  详解CentOS6.5 安装 MySQL5.1.71的方法  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  如何续费美橙建站之星域名及服务?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  如何撰写建站申请书?关键要点有哪些?  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  如何在宝塔面板中修改默认建站目录?  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  韩国服务器如何优化跨境访问实现高效连接?  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  Windows Hello人脸识别突然无法使用  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  佛山企业网站制作公司有哪些,沟通100网上服务官网?  ,在苏州找工作,上哪个网站比较好?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  Swift中swift中的switch 语句  如何在万网自助建站中设置域名及备案?  七夕网站制作视频,七夕大促活动怎么报名?  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  如何快速搭建自助建站会员专属系统?  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  如何在阿里云服务器自主搭建网站?  如何在建站之星网店版论坛获取技术支持?  音乐网站服务器如何优化API响应速度?  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  企业网站制作这些问题要关注  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  javascript日期怎么处理_如何格式化输出  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Android中AutoCompleteTextView自动提示