PHP DOMDocument类怎么加载和保存XML


DOMDocument 是 PHP 处理 XML/HTML 的标准类,需注意编码一致、空白节点处理及错误屏蔽:加载前设 preserveWhiteSpace=false、libxml_use_internal_errors(true),显式指定 encoding;保存时启用 formatOutput=true 可格式化输出。

php domdocument类怎么加载和保存xml

PHP 的 DOMDocument 类是处理 XML(和 HTML)最常用、最标准的方式。它基于 W3C DOM 规范,支持加载、解析、修改和保存 XML 文档。关键在于:加载要处理编码和错误,保存要注意格式化和编码一致性。

加载 XML 文件或字符串

load() 加载文件,loadXML() 加载字符串。默认会解析 DTD 并报告警告(比如编码不匹配、标签未闭合),建议提前配置错误处理:

  • 调用 libxml_use_internal_errors(true) 屏蔽警告,避免因非致命问题中断执行
  • 设置 $doc->encoding = 'UTF-8' 显式声明编码(尤其对无声明的 XML)
  • 若 XML 声明中指定了 encoding="GBK",需确保源内容真实为 GBK,否则解析可能乱码

示例:

当贝AI 当贝AI

免登录体验DeepSeek满血版

当贝AI 888 查看详情 当贝AI php
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->encoding = 'UTF-8';
if (!$doc->load('data.xml')) {
  echo "加载失败:" . implode(', ', libxml_get_errors());
}
?>

加载时跳过空白文本节点(让结构更干净)

XML 中换行和缩进会被解析为 DOMText 节点,干扰遍历。可在加载前启用 preserveWhiteSpace = false

立即学习“PHP免费学习笔记(深入)”;

  • 必须在 load()loadXML() 之前设置,之后设置无效
  • 它只影响“纯空白”文本节点(全空格/换行),不会删掉元素内有意义的空格

示例:

$doc = new DOMDocument();
$doc->preserveWhiteSpace = false;
$doc->loadXML('abc');

保存 XML 到文件或字符串

s*e() 写入文件,s*eXML() 返回字符串。注意三点:

  • s*eXML() 默认输出整个文档,加参数如 $doc->s*eXML($node) 可只输出某个子节点
  • 若希望输出带缩进的可读格式,启用 formatOutput = true(但会自动添加换行和空格)
  • 保存的编码由 $doc->encoding 决定,且 XML 声明中的 encoding 属性也会被同步更新

示例(保存为缩进 UTF-8):

$doc->formatOutput = true;
$doc->encoding = 'UTF-8';
$doc->s*e('output.xml'); // 自动写入

常见坑与应对

实际使用中容易卡在这几个地方:

  • 中文乱码:确认源 XML 编码声明、文件真实编码、$doc->encoding 三者一致;读取后可用 mb_detect_encoding() 辅助判断
  • 无法加载远程 URLallow_url_fopen 关闭时 load() 会失败,改用 file_get_contents() + loadXML()
  • 保存后丢失 CDATA 或特殊字符:DOM 默认会转义,若需保留原始内容,用 createCDATASection() 显式创建节点

基本上就这些。DOMDocument 不复杂但容易忽略细节,把编码、空白、错误处理这三块理清楚,日常 XML 操作就稳了。

以上就是PHP DOMDocument类怎么加载和保存XML的详细内容,更多请关注php中文网其它相关文章!


# 创建一个  # 新站seo 优化  # 同城关键词排名优化免费  # 广东搜狗关键词seo  # 童装拿货网站建设文案  # 五八同城营销推广  # 免费为老百姓推广的网站  # 陇南网络推广网络营销  # 定制线上营销推广方案  # 杭州本地营销推广哪家好  # 网站设计网站建设模板  # 从零开始  # 如何将  # php  # 解决方法  # 手把手  # 教你  # 换行  # 文档  # 多个  # 加载  # 格式化输出  # 中文乱码  # 编码  # node  # html 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: HTML中多图片上传与预览:解决ID冲突的专业指南  智慧团建活动报名入口 智慧团建活动报名入口手机端官网​  J*aScript对象中深度嵌套URL键的查找与更新策略  邦丰播放器频道搜索设置  漫蛙漫画直连入口 _ manwa官方备用入口实时检测  《随手记》关闭首页消息推送方法  我居然低估了 DeepSeek,这次更新它做到了这些!  猫眼app抢票快还是小程序快  《植物大战僵尸3》火龙草作用介绍  江苏大剧院会员卡购买步骤  QQ阅读小说搜索入口地址_QQ阅读小说搜索入口地址搜索在线阅读  申通快件单号查询平台 申通包裹物流动态跟踪  2025SNH48年度青春盛典门票价格及购买方式  windows10怎么更改下载路径_windows10默认存储位置修改教程  Leaflet地图弹出窗口图片动态显示:避免缺失图标的专业指南  优化Flask模板中SQLAlchemy查询迭代标签:处理字符串空格问题  FotoBalloon图片左右镜像教程  WPS长文档分栏排版不乱方法_WPS分栏+分节符报纸排版教程  《漫蛙manwa2》防走失网页版链接2025  《360浏览器》自动保存账号密码设置方法  Python中处理嵌套字典与列表的数据提取与过滤教程  mysql怎么导入sql文件_mysql导入sql文件的方法与技巧  如何在CSS中使用absolute实现登录弹窗居中_transform translate结合  苹果手机怎么合并照片_苹果手机合并多张照片的操作方法  谷歌浏览器官网地址整理_谷歌浏览器新版直连2026稳定访问  《美篇》取消会员自动续费方法  抖音猜你想搜能说明对方搜过吗  《领英》查看屏蔽名单方法  从J*a应用程序中导出MySQL表数据的技术指南  Lar*el 中高效执行多列更新:单次查询实现  传统曲艺莲花落的表演形式是  如何配置VS Code作为您Git操作的默认编辑器  AO3官方镜像链接 | 最新防走失网址永久收藏  PPT页面尺寸怎么修改 PPT自定义幻灯片大小与方向设置【教程】  宝妈做视频号该写什么标签话题?宝妈关注的话题有哪些?  MySQL多重关联查询:利用别名高效获取同一表的多个关联字段  如何解决Casbin日志与应用日志不统一的问题,使用casbin/psr3-bridge实现无缝集成  Excel宏怎么删除_Excel中删除宏的详细操作流程  Bootstrap 5导航栏折叠功能失效:数据属性迁移指南  如何在mysql中比较InnoDB和MyISAM区别  搜狗浏览器如何查找页面中的文字 搜狗浏览器Ctrl+F页面搜索功能  POKI小游戏在线免费入口链接 POKI小游戏无下载秒玩玩  mysql怎么查询数据_mysql基础查询语句使用教程  微信如何设置字体大小_微信字体设置的阅读舒适  支付宝网页版在线入口 支付宝官网电脑登录入口  Highcharts雷达图径向轴数值标签实现教程  QQ网页版入口导航 QQ网页版在线访问通道  《梦想世界:长风问剑录》药师一图流分享  《tt语音》超级玩家开通方法  海外搜索引擎推广效果怎么样,怎么分析效果! 

 2025-12-14

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.