php xml操作

xiaoxiao2021-02-28  30

前言

xml大多用来存储数据

正文

入门案例

<?xml version="1.0" encoding="utf-8" ?> <stu> <name>draymonder</name> </stu>

处理特殊字符

<imgs><![CDATA[$<$$#@>]]></imgs> CDATA的基本语法 <![CDATA[内容]]> 面试题: 如何使用xml文件来传递,保存一个图片 答: 使用程序先读入到内存 然后保存到xml的<![CDATA[文件内容]]>

xml的PI处理指令

通过PI指令来引入CSS样式文件: PI指令的弊端: 只对英文的标签起作用,对中文的标签不起作用。 //和html引用css大同小异 <?xml-stylesheet type="text/css" href="txt.css"?> //txt.css内容 name{ background-color:red; } age{ background-color:green; }

dtd (Document Type Definition

为了约束xml文件,使xml语义合法 dtd详解

基本语法 <!ELEMENT 元素名 类型> //元素约束 <!ATTLIST 元素名> //属性约束 <!ENTITY 元素名 "引用内容"> //用元素名来表示引用的内容

phpDom快速入门

$xmldoc = new DomDocument(); $xmldoc->load("test.xml"); //读文件的时候用load方法 //读字符串的时候用 loadXML方法 //eg: $xmldoc->loadXML('<root><node/></root>'); //找到root节点 $nodeLists=$xmldoc->getElementsByTagName("stu"); //返回的是结果集合 $nodeList = $nodeLists->item(0); //上面直接就已经找到root节点了 //新增name节点 $node_name = $xmldoc->createElement("name"); $node_name->nodeValue = "我喜欢你"; //新增age节点 $node_age = $xmldoc->createElement("age"); $node_age->nodeValue = "20"; //root节点下挂载 name节点和age节点 $root->appendChild($node_name); $root->appendChild($node_age); //内存中修改完毕以后 还要保存文件内容 $xmldoc->save("test.xml"); //删除操作 $test->parentNode->removeChild($test); //更新操作 找到那个需要修改的节点 直接改 nodeValue属性就可以 //设置属性 setAttribute (string $name ,string $value) 添加属性为$name 属性值$value的属性

xpath

php dom技术可以跨层取出,但是不能保持层次关系,使用xpath可以解决

这种技术相当于是知道节点所在的层级,然后通过层级关系来找相应的节点 $xmldoc = new DOMDocument(); $xmldoc->load("test.xml"); $xpath = new DOMXPath($xmldoc); $node_list = $xpath->query("/stu"); echo $node_list->length;

SimpleXML

以面向对象方式来操作xml文件

//装载文件 $stu = simplexml_load_file("test.xml"); $name = $stu->name; var_dump($name); foreach ($name as $value) { echo "$value <br>"; } //还有装载方式从DOM对象 simplexml_import_dom //装载字符串 simplexml_load_string

超链接统一打开问题

<head> <base target="_blank"> </head>

后记

比预想的进度晚了好多,寒假也没有接触爬虫和Java,Linux也是空手而归.. 新的学期还有好多好多的比赛,希望自己能坚持下去,Just do what you want to do. 没有那么多的约束,尽情去展现自己的水平吧。 To learn,to try.

转载请注明原文地址: https://www.6miu.com/read-1949974.html

最新回复(0)