一、XML的概念
XML即可扩展标记语言(ExtensibleMarkupLanguage),是一种平台无关的表示数据的方法
标记语言:是一种将文本以及文本相关的其他信息结合起来,展现出文档结构和数据处理细节的电脑文字编码
二、XML的作用和规则
不同的业务系统之间如何方便的进行数据交换,让开发人员煞费苦心。通常用的数据存放方式,常用的有两种:数据库和文件。如果使用数据库操作那么需要统一数据库,过程复繁琐。
所有能不能使用一个文件来做,能不能找到一个可以保持数据结构的文件来存放数据,XML的出现使我们有了一个很好的解决方法。
对比分析XML、HTML、HTTP概念
三、XML作用:存储和传输数据
<?xmlversion="1.0"?>
<books>
<bookno="1">
<author>泽瓦斯</author>
<title>PHPWeb2.0开发实战</title>
<introduce>主要介绍ZendFramework,作者代码值得学习</introduce>
</book>
<bookno="2">
<author>麦克阿瑟</author>
<title>PHP高级程序设计:模式、框架与测试</title>
<introduce>深入设计模式、PHP标准库和JSON</introduce>
</book>
</books>
作用:
在不同的系统中共享和交互数据
数据结构化和具有可读性
四、读取XML的数据
1、DOM的方式读取XML文档
Xml文件:
Stu.xml
<?xmlversion="1.0"encoding="UTF-8"?>
<students>
<studentno="1">
<name>zhangsan</name>
<age>20</age>
</student>
<studentno="2">
<name>lisi</name>
<age>21</age>
</student>
</students>
PHP程序
<?PHP
//创建dom对象
$dom=newDOMDocument();
//加载xml文件
$dom->load("stu.xml");
//将最外层节点读入
$students=$dom->getElementsByTagName("students");
//遍历
foreach($studentsas$key=>$val){
//读取下一层节点
$stu=$val->getElementsByTagName("student");
//遍历下一层节点
foreach($stuas$k=>$v){
//获取name节点对象
$name=$v->getElementsByTagName("name");
//获取节点对象的值
$na=$name->item(0)->nodeValue;
//获取age节点
$age=$v->getElementsByTagName("age");
//获取节点的值
$ag=$age->item(0)->nodeValue;
}
}
?>
创建XML:
声明DOM对象:newDOMDocument()
创建节点:createElement()
给子节点赋值
创建文本节点:createTextNode()
添加子节点:appendChild()
创建节点属性:createAttribute()
给属性节点赋值
创建包含<![CDATA[数据]]>的节点:createCDATASection
例子:
2、将数组中的数据循环遍历
3、循环的过程中创建节点,并存储数据数据
4、将XML保存为文件
注意:
创建节点使用createElement方法,
例子:
<?PHP
$data_array=array(
array(
'title'=>'title1',
'content'=>'content1',
'pubdate'=>'2014/9/2',
),
array(
'title'=>'title2',
'content'=>'content2',
)
);
//属性数组
$attribute_array=array(
'title'=>array(
'size'=>1
)
);
//创建一个XML文档并设置XML版本和编码。。
$dom=newDomDocument('1.0','utf-8');
//创建根节点
$article=$dom->createElement('article');
$dom->appendchild($article);
foreach($data_arrayas$data){
$item=$dom->createElement('item');
$article->appendchild($item);
create_item($dom,$item,$data,$attribute_array);
}
echo$dom->saveXML();
//在磁盘上保存
$dom->save("order.xml");
functioncreate_item($dom,$attribute){
if(is_array($data)){
foreach($dataas$key=>$val){
//创建元素
$$key=$dom->createElement($key);
$item->appendchild($$key);
//创建元素值
$text=$dom->createTextNode($val);
$$key->appendchild($text);
if(isset($attribute[$key])){
//如果此字段存在相关属性需要设置
foreach($attribute[$key]as$akey=>$row){
//创建属性节点
$$akey=$dom->createAttribute($akey);
$$key->appendchild($$akey);
//创建属性值节点
$aval=$dom->createTextNode($row);
$$akey->appendChild($aval);
}
}//endif
}
}//endif
}//endfunction
?>
原文链接:https://www.f2er.com/xml/296801.html