PHP基于DOMDocument解析和生成xml的方法分析
发布时间 - 2026-01-11 02:22:50 点击率:次本文实例讲述了PHP基于DOMDocument解析和生成xml的方法。分享给大家供大家参考,具体如下:

前面和大家分享了SimpleXML操作xml的一些知识,但是php中除了simplexml还有DOMDocument,这次就着重来看看DOMDocument的用法,还是把生成xml和解析xml分开写
1. xml的生成
DOMDocument操作xml要比先前的simplexml要复杂一点,我觉得simplexml就想Java里的dom4j,不管怎样原理都是一样的。如果把DOMDocument里的节点,属性看做是枝叶那么DOMDocument的DOMDocument就是根,节点和属性都挂载在这个对象下面。看看下面的代码就很清楚了
<?php
$doc=new DOMDocument('1.0','utf-8');
//创建根节点
$root=$doc->createElement("StudentInfo");
//创建第一个子节点
$item=$doc->createElement("Item");
$name=$doc->createElement("name","蔡依林");
$studentnum=$doc->createElement("num","2009010502");
//创建属性(phpdom可以把任何元素当做子节点)
$id=$doc->createAttribute("id");
$value=$doc->createTextNode('1');
$id->appendChild($value);
//在父节点下面加入子节点
$item->appendChild($name);
$item->appendChild($studentnum);
$item->appendChild($id);
$item2=$doc->createElement("Item");
$name2=$doc->createElement("name","潘玮柏");
$studentnum2=$doc->createElement("num","2009010505");
$id2=$doc->createAttribute("id");
$value2=$doc->createTextNode('2');
$id2->appendChild($value2);
$item2->appendChild($name2);
$item2->appendChild($studentnum2);
$item2->appendChild($id2);
$root->appendChild($item);
$root->appendChild($item2);
//把根节点挂载在DOMDocument对象
$doc->appendChild($root);
header("Content-type: text/xml");
//在页面上输出xml
echo $doc->saveXML();
//将xml保存成文件
$doc->save("stu.xml");
?>
这段代码仔细看的话其实不复杂,可能性在id属性的那个地方会有点疑问,文本节点也必须挂载在DOMDocument下面,之后把文本节点挂载在属性下面。来看下生成的xml
其实DOMDocument是首先生成节点或属性,而xml的层级关系是最后通过addchild来体现的
2. DOMDocument解析
<?php
$doc=new DOMDocument();
//如果是解析xml字符串则使用loadXML
$doc->load('stu.xml');
//取得根节点
$root=$doc->documentElement;
//通过标记的名字取得对应的元素
$items=$root->getElementsByTagName('Item');
foreach($items as $key=>$val){
// echo count($val->attributes);
//id是第一个属性所以使用item(0),nodeValue用来取得节点的值
echo $val->attributes->item(0)->name.":".$val->attributes->item(0)->nodeValue." ";
foreach($val->getElementsByTagName('name') as $key2=>$val2){
echo $val2->nodeValue." ";
}
foreach($val->getElementsByTagName('num') as $key3=>$val4){
echo $val4->nodeValue."</br>";
}
}
?>
解析的话重在理解,getElementsByTagName方法,attributes属性和item是解析xml的重点。别的都算简单,看看解析出来的东西
总的来说是比simplexml麻烦一些,但是作为程序员还能接受吧。
PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:
在线XML/JSON互相转换工具:
http://tools./code/xmljson
在线格式化XML/在线压缩XML:
http://tools./code/xmlformat
XML在线压缩/格式化工具:
http://tools./code/xml_format_compress
XML代码在线格式化美化工具:
http://tools./code/xmlcodeformat
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP针对XML文件操作技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP错误与异常处理方法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
# PHP
# DOMDocument
# 解析
# 生成
# xml
# PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
# 如何解决php domdocument找不到的问题
# PHP中使用DOMDocument来处理HTML、XML文档的示例
# PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
# PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
# PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
# php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
# PHP XML操作类DOMDocument
# php基于DOMDocument操作页面元素实例
# 操作技巧
# 程序设计
# 相关内容
# 在这个
# 我觉得
# 第一个
# 还能
# 感兴趣
# 这段
# 给大家
# 要比
# 很清楚
# 就想
# 大家分享
# 更多关于
# 所述
# 仔细看
# 重来
# 几款
# 面向对象
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
简单实现Android验证码
Bootstrap整体框架之JavaScript插件架构
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
大同网页,大同瑞慈医院官网?
Python制作简易注册登录系统
jquery插件bootstrapValidator表单验证详解
音响网站制作视频教程,隆霸音响官方网站?
Laravel怎么在Blade中安全地输出原始HTML内容
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
如何在自有机房高效搭建专业网站?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
在centOS 7安装mysql 5.7的详细教程
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
新三国志曹操传主线渭水交兵攻略
魔方云NAT建站如何实现端口转发?
Laravel如何为API编写文档_Laravel API文档生成与维护方法
智能起名网站制作软件有哪些,制作logo的软件?
在线制作视频网站免费,都有哪些好的动漫网站?
Laravel如何保护应用免受CSRF攻击?(原理和示例)
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
Laravel如何升级到最新版本?(升级指南和步骤)
如何批量查询域名的建站时间记录?
详解CentOS6.5 安装 MySQL5.1.71的方法
网站制作免费,什么网站能看正片电影?
javascript中闭包概念与用法深入理解
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
使用Dockerfile构建java web环境
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
如何用PHP快速搭建高效网站?分步指南
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
PHP正则匹配日期和时间(时间戳转换)的实例代码
在Oracle关闭情况下如何修改spfile的参数
网站建设整体流程解析,建站其实很容易!
UC浏览器如何设置启动页 UC浏览器启动页设置方法
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
php 三元运算符实例详细介绍
Laravel如何实现事件和监听器?(Event & Listener实战)

