本文的例子讲述了PHP使用DOM进行XML解析的操作。分享给大家参考,如下:
文档对象模型:文档对象模型。其核心思想是将xml文件视为一个对象模型,然后以对象的方式操作xml文件。
Xml本身有很多节点:元素节点文本节点属性节点注释节点CDATA节点文档节点
Php添加、删除、更改和查找xml文档。具体分析如下:
Xml文档:class.xml
?xml版本='1.0 '编码='utf-8 '?班级学生信息='美女'姓名小乔/姓名性别女/性别年龄20/年龄/学生姓名周瑜/姓名性别男/性别年龄25/年龄/学生/班级
Php文件(对xml文档的操作)
查询操作案例:
?Php//1。创建一个DOMDocument对象。此对象表示xml文件$ xmldoc=new DomDocument();//2.加载一个xml文件(指定要解析哪个xml文件,然后将dom树节点加载到内存中)$ xmldoc-load(' class . XML ');//3.目的:获取第一个学生的名字//3.1第一步:读取所有学生/*方法getElementsByTagName:根据给定的节点名(这里是学生)找到对应的节点,返回DOMNodeList类型的对象,相当于把所有学生都拿出来。您可以使用var_dump($students)根据返回值查找手册,并查看其下面的属性和方法。*/$ students=$ xmldoc-getElementsByTagName(' student ');回声“有”。$学生长度。学生br/';//3.2读第一个学生/*读第一个学生。返回值是一个DOMElement对象。直接回显$ stu 1-node value;姓名、性别和年龄都是输出。*/$ stu 1=$ studies-item(0);//3.3取出第一个学生的名字$ stu 1 _ name=$ stu 1-getelementsbyname(' name ');//3.4读取名称echo $ stu 1 _ name-item(0)-node value;注意事项:
(1)编码问题;(2)这只是一个基本的演示,比较麻烦。后来,循环和函数被用来操作;(3)使用var_dump()检查变量的返回值是什么,然后根据返回值在手册中查找返回值下的属性和方法。(4)在整个顺序中,getElementByTagName()不需要逐层读取,实际上可以直接读取节点名称,而无需先读取学生(当然,如果同一个学生下有多个名称,就会出现问题,所以这里需要学习xpath的新知识)。
因此,上面的代码可以简单地更改为:
?Php//1。创建一个DOMDocument对象。此对象表示xml文件$ xmldoc=new DomDocument();//2.加载一个xml文件(指定要解析哪个xml文件,然后将dom树节点加载到内存中)$ xmldoc-load(' class . XML ');//3.目标:获得第一个学生的名字$ stu=$ xmldoc-getelementsbyname(' name ');//直接找到节点名$ stu 1=$ stu-item(0);//项(1),可以得到周瑜的echo $ stu 1-node value;创建xml的各种节点
节点元素:createElement(标记名)文本元素:createTextNode(文本内容)属性节点:createAttribute(属性名)CDATA节点:createCDATASection(文本内容)
父节点。附加子节点
Dom创建xml文档案例
?phpini_set('display_errors ',1);//利用数字正射影像图方式创建一个可扩展标记语言文档/*狗名黄晓/名字颜色黄色/颜色年龄/年龄/狗*/$ DOM=new DOMDocument(' 1.0 ',' utf-8 ');//创建元素节点$ dog=$ DOM-create元素(' dog ');$ name=$ DOM-CreateElement(' name ');$ color=$ DOM-创建元素(' color ');$ age=$ DOM-create element(' age ');//创建文本节点$name_txt=$dom - createTextNode('黄晓');$color_txt=$dom - createTextNode('黄色');$ age _ txt=$ DOM-createTextNode(' 2 ');//追加//元素节点追加文本节点$ name-appendChild($ name _ txt);$ color-appendChild($ color _ txt);$ age-appendChild($ age _ txt);//元素节点追加元素节点$ dog-appendChild($ name);$ dog-appendChild($ color);$ dog-appendChild($ age);//最外面的根节点需要给数字正射影像图节点追加$ DOM-appendChild($ dog);//方法(1)输出可扩展标记语言信息到浏览器标头(' content-type : text/XML;charset=utf-8 ');echo $ DOM-SaveXMl();//信息直接输出到浏览器中//方法(2)输出可扩展标记语言信息到指定文件$ DOM-格式输出=真;$dom - save(' ./file _ XML。XML ');结果为
创建属性节点
?phpini_set('display_errors ',1);//利用数字正射影像图方式创建一个可扩展标记语言文档/*狗名体重='50 '身高='90 '黄晓/名颜色黄色/颜色年龄/年龄/狗*/$ DOM=new DOMDocument(' 1.0 ',' utf-8 ');//创建元素节点$ dog=$ DOM-create元素(' dog ');$ name=$ DOM-CreateElement(' name ');$ color=$ DOM-创建元素(' color ');$ age=$ DOM-create element(' age ');//创建文本节点$name_txt=$dom - createTextNode('黄晓');$color_txt=$dom - createTextNode('黄色');$ age _ txt=$ DOM-createTextNode(' 2 ');//追加//元素节点追加文本节点$ name-appendChild($ name _ txt);$ color-appendChild($ color _ txt);$ age-appendChild($ age _ txt);//元素节点追加元素节点$ dog-appendChild($ name);$ dog-appendChild($ color);$ dog-appendChild($ age);//创建属性节点方法(1),给名字节点创建重量属性节点$ weight _ txt=$ DOM-createTextNode(' 50 ');$ weight=$ DOM-CreateAttribute(' weight ');$ weight-appendChild($ weight _ txt);//属性节点追加自己的文本节点$ name-appendChild($ weight);//属性节点被追加到对应的元素节点中//创建属性节点方法(2),给名字节点创建高度属性节点$name - setAttribute('height ',90);//最外面的根节点需要给数字正射影像图节点追加$ DOM-appendChild($ dog);//方法(1)输出可扩展标记语言信息到浏览器标头(' content-type : text/XML;charset=utf-8 ');echo $ DOM-SaveXMl();//信息直接输出到浏览器中//方法(2)输出可扩展标记语言信息到指定文件$ DOM-格式输出=真;$dom - save(' ./file _ XML。XML ');
PS:这里再为大家提供几款关于可扩展标记语言操作的在线工具供大家参考使用:
在线XML/JSON互相转换工具:http://工具。JB 51。net/code/xmljson
在线格式化XML/在线压缩XML:http://工具。JB 51。net/代码/XML格式
可扩展置标语言在线压缩/格式化工具:http://工具。JB 51。net/code/XML _ format _ compress
可扩展置标语言代码在线格式化美化工具:http://工具。JB 51。net/code/xmlcodeformat
更多关于服务器端编程语言(专业超文本预处理器的缩写)相关内容感兴趣的读者可查看本站专题: 《PHP针对XML文件操作技巧总结》 、 《PHP数组(Array)操作技巧大全》 、 《php字符串(string)用法总结》 、 《php面向对象程序设计入门教程》 、 《php+mysql数据库操作入门教程》 及《php常见数据库操作技巧汇总》
希望本文所述对大家服务器端编程语言(专业超文本预处理器的缩写)程序设计有所帮助。