php xml操作

前言

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.

猜你喜欢

转载自blog.csdn.net/BING1926/article/details/79487111