XML的概念,作用,及试用

来源:互联网 发布:麻将至尊王软件 编辑:程序博客网 时间:2024/05/16 04:51

一、XML的概念

XML 即可扩展标记语言(Extensible Markup Language),是一种平台无关的表示数据的方法

标记语言:是一种将文本以及文本相关的其他信息结合起来,展现出文档结构和数据处理细节的电脑文字编码

 

二、XML的作用和规则

不同的业务系统之间如何方便的进行数据交换,让开发人员煞费苦心。通常用的数据存放方式,常用的有两种:数据库和文件。如果使用数据库操作那么需要统一数据库,过程复繁琐。

 

所有能不能使用一个文件来做,能不能找到一个可以保持数据结构的文件来存放数据,XML的出现使我们有了一个很好的解决方法。

 

对比分析XMLHTML HTTP概念

 

三、XML作用:存储和传输数据

<?xml version="1.0"?>

<books>

<book no="1">

<author>泽瓦斯</author>

<title>PHP Web 2.0开发实战</title>

<introduce>主要介绍ZendFramework,作者代码值得学习</introduce>

</book>

<book no="2">

<author>麦克阿瑟</author>

<title>PHP高级程序设计:模式、框架与测试</title>

<introduce>深入设计模式、PHP标准库和JSON</introduce>

</book>

</books>

作用:

 

在不同的系统中共享和交互数据

数据结构化和具有可读性

四、读取XML的数据

1、DOM的方式读取XML文档

Xml文件:

Stu.xml

<?xml version="1.0" encoding="UTF-8"?> 

<students>

<student no="1">

<name>zhangsan</name>

<age>20</age>

</student>

<student no="2">

<name>lisi</name>

<age>21</age>

</student>

</students>

 

Php程序

<?php

//创建dom对象

$dom=new DOMDocument();

//加载xml文件

$dom->load("stu.xml");

//将最外层节点读入

$students=$dom->getElementsByTagName("students");

//遍历

foreach($students as $key=>$val){

//读取下一层节点

$stu=$val->getElementsByTagName("student");

//遍历下一层节点

foreach($stu as $k=>$v){

//获取name节点对象

$name=$v->getElementsByTagName("name");

//获取节点对象的值

$na=$name->item(0)->nodeValue;

//获取age节点

$age=$v->getElementsByTagName("age");

//获取节点的值

$ag=$age->item(0)->nodeValue;

}

}

 

?>

 

 

   五、Php创建xml文件

创建XML

声明DOM对象 :new DOMDocument( )

创建节点:createElement ( )

给子节点赋值

创建文本节点 :createTextNode()

添加子节点:appendChild( )

创建节点属性:createAttribute( )

给属性节点赋值

创建包含<![CDATA[数据]]>的节点:createCDATASection

 

例子:

 

 

1、从数据库中查询数据得到数据数组

2、将数组中的数据循环遍历

3、循环的过程中创建节点,并存储数据数据

4、将XML保存为文件

 

注意:

使用DomDocument生成XML文件

创建节点使用createElement方法,

创建文本内容使用createTextNode方法,

添加子节点使用appendChild方法,

创建属性使用createAttribute方法

 

例子:

<?PHP

$data_array = array(

    array(

    'title' => 'title1',

    'content' => 'content1',

     'pubdate' => '2014/9/2',

    ),

    array(

    'title' => 'title2',

    'content' => 'content2',

    'pubdate' => '2014/9/2',

    )

); 

//  属性数组

$attribute_array = array(

    'title' => array(

    'size' => 1

    )

);

 

//  创建一个XML文档并设置XML版本和编码。。

$dom=new DomDocument('1.0', 'utf-8');

 

//  创建根节点

$article = $dom->createElement('article');

$dom->appendchild($article);

 

foreach ($data_array as $data) {

    $item = $dom->createElement('item');

    $article->appendchild($item);

 

    create_item($dom, $item, $data, $attribute_array);

}

 //输出生成的xml文件

echo $dom->saveXML();

//在磁盘上保存

$dom->save("order.xml"); 

 

function create_item($dom, $item, $data, $attribute) {

    if (is_array($data)) {

        foreach ($data as $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);

                }

            }   //  end if

        }

    }   //  end if

}   //  end function

?> 

0 0
原创粉丝点击