前言
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.