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

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,否则解析可能乱码
示例:
Glarity
Glarity是一款免费开源的AI浏览器扩展,提供YouTube视频总结、网页摘要、写作工具等功能,支持免费的镜像翻译,电子邮件写作辅助,AI问答等功能。

131
查看详情
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:
- 必须在
load()或loadXML()之前设置,之后设置无效 - 它只影响“纯空白”文本节点(全空格/换行),不会删掉元素内有意义的空格
示例:
$doc = new DOMDocument();$doc->preserveWhiteSpace = false;
$doc->loadXML('
保存 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()辅助判断 -
无法加载远程 URL:
allow_url_fopen关闭时load()会失败,改用file_get_contents()+loadXML() -
保存后丢失 CDATA 或特殊字符:DOM 默认会转义,若需保留原始内容,用
createCDATASection()显式创建节点
基本上就这些。DOMDocument 不复杂但容易忽略细节,把编码、空白、错误处理这三块理清楚,日常 XML 操作就稳了。
以上就是PHP DOMDocument类怎么加载和保存XML的详细内容,更多请关注php中文网其它相关文章!
# 解决方法
# 广东关键词排名怎样做
# 迎泽区seo优化口碑
# 布吉怎么找网站推广
# 北京拼多多网站建设优势
# 宝山区专业网站优化案例
# 鼓楼区网站推广营销
# 建站内置seo
# 新乡抖音seo竞价
# 金华排名关键词服务
# 电子商务seo培训
# 如何将
# 创建一个
# php
# 等功能
# 手把手
# 教你
# 换行
# 文档
# 多个
# 加载
# 格式化输出
# 中文乱码
# 编码
# node
# html
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Yandex免登录官网入口_俄罗斯Yandex搜索引擎直达链接
曝R星经典之作开发图 设计简陋但信息密集!
《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情
sublime怎么覆盖插件的默认快捷键_sublime快捷键优先级与设置
AO3官方可用镜像 Archive of Our Own网页版最新入口
如何将HTML表格多行数据保存到Google Sheet
如何在复杂的电商平台中优雅地管理共享资源并确保正确重定向,使用spryker-shop/resource-share-page模块助你一臂之力
极兔快递快件信息查询系统 极兔快递官网运单号追踪
在J*a中如何使用Stream.map转换元素_Stream映射操作解析
抖音网页版平台入口 抖音网页版官网在线访问教程
sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件
一加Ace 6T实拍样张首次公布!李杰:主摄实力完全看齐4K档性能旗舰
UC浏览器如何安装插件 UC浏览器添加扩展程序详细教程【进阶】
不同用户不同价格! 索尼开启账户个性化定价测试
小红书怎么解除第三方平台绑定_小红书多平台登录解绑方法介绍
怎样在Excel中做仪表盘_Excel仪表盘设计与关键指标展示方法
126邮箱账号注册 电脑版登录入口
Win11怎么修改默认浏览器_Windows 11设置Chrome为默认
12306几点到几点不能订票? | 官方最新系统维护时间全解析
现代化 SciPy 一维插值:interp1d 的替代方案与最佳实践
使用J*aScript检测输入元素是否包含在特定类中
怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】
vivo浏览器自带的下载器速度慢怎么办 vivo浏览器提升文件下载速度的技巧
Go调试环境为何无法启动_Go调试器启动失败原因与解决策略
Yandex搜索引擎一键访问入口_俄罗斯Yandex官网免登录
C++如何实现线程池_C++11手动实现一个简单的固定大小线程池
MinIO大规模对象列表性能瓶颈深度解析与外部元数据管理策略
单射、满射与双射的关系 一文理清所有逻辑
动漫花园资源网使用步骤_动漫花园资源网下载流程
Pyrogram与g4f集成:异步编程实践与常见错误解决
PHP表单数据传递:如何通过隐藏输入字段获取动态ID
实现全屏滚动与导航点:专业教程
58动漫网在线官方网 58动漫网正版动漫入口网址
钉钉视频会议画面卡顿如何解决 钉钉会议画面优化方法
2306选座时如何选靠窗位置_12306选座靠窗座位查看方法解析
Win10桌面图标出现小盾牌怎么办 Win10去除UAC图标教程【解决】
如何在更新Composer依赖后自动运行测试_使用post-update-cmd钩子触发PHPUnit
Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】
c++中的const_cast和reinterpret_cast怎么用_c++四种类型转换
Win10磁盘清理工具在哪 Win10打开并使用磁盘清理【教程】
如何使 Jest 模拟函数默认抛出错误以提高测试效率
css卡片内容溢出如何处理_使用overflow隐藏或scroll显示内容
PHP中SSG-WSG API的AES加密实践:正确使用初始化向量
Golang如何实现状态模式管理对象状态_Golang State模式实现技巧
Kafka Streams中基于消息头条件过滤消息的实现指南
PPT平滑切换怎么做 PPT炫酷“平滑”切换动画制作教程【必学】
c++中的std::forward_list和std::list有什么不同_c++ forward_list与list区别分析
C++如何连接MySQL数据库_C++使用Connector/C++操作MySQL数据库教程
Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践
AO3最新入口2025公告_AO3中文官网合集


2025-12-14
浏览次数:次
返回列表