zoukankan      html  css  js  c++  java
  • 14.PHP_PHP与XML技术

    PHPXML技术

    先把概念粘过来:


    先来个基本模板:

    <?xml version="1.0" encoding="gb2312" standalone="yes"?>

    <?xml-stylesheet type="text/css" href="Book.css"?>

    <!-- 下面的标签<计算机图书>就是这个XML文档的根目录 -->

    <计算机图书>

    <PHP>

    <书名>PHPXXX</书名>

    <价格 单位="/">23.3</价格>

    <出版时间>xxx-xxx-xxx</出版时间>

    </PHP>

    </计算机图书>

     

    接下来解释下细节:

    1.XML声明

    只能出现一次,必须在第一行。

    <?xml version="1.0" encoding="gb2312" standalone="yes"?>


    2.处理指令(如何处理XML文档的指令)

    格式<?处理指令名 处理执行信息?>

    <?xml-stylesheet type="text/css" href="Book.css"?>


    3.注释

    XML注释和HTML注释一样<!-- XXXXXX -->

    注意问题:


    4.XML元素

    元素通常必不可少,是文档内容的基本单元。

    <标签>数据内容</标签>


    5.XML属性

    XML属性是XML元素中的内容,是可选的。

    <标签 属性名=”属性值” 属性名=”属性值”>内容</标签>


    6.
    CDATA标记

    XML中特殊字符需要实体引用(也就是以为某些字符会转意,所以表示的时候要换个姿势)


    如果多的话可以直接采取CDATA来表示:

    <![CDATA[

    ......

    ]]>

    例子:

    <?xml version="1.0" encoding="gb2312" standalone="yes"?>

    <exam>

    <实体引用>这里必须使用引用"$lt;""$gt;""$amp;"</实体引用>

    <CDATA标签>

    <![CDATA[

    这里可以正常输出"<"">""$"

    ]]>

    </CDATA标签>

    </exam>

     

    7.XML命名空间

    <标签名称 xmlns:前缀名称=”URL”>

     

    <?xml version="1.0" encoding="gb2312" standalone="yes"?>

    <TUSHU xmlns:frn="http://www.xxx.xxx/xxx">

    <frn:English>

    <frn:MINGZI>XXX</frn:MINGZI>

    <frn:JIAGE>XXX</frn:JIAGE>

    </frn:English>

    </TUSHU>


    PHPXML

    1.PHP中创建文档

    <?php
        header('Content-type:text/xml');
        echo '<?xml version="1.0" encoding="gb2312"?>';
        echo '<BOOK>';
        echo '<PHP>';
        echo '<NAME>XXX</NAME>';
        echo '<DATA>XXX-XXX-XXX</DATA>';
        echo '</PHP>';
        echo '</BOOK>';
    ?>


    2.SimpleXML

    PHPXML格式的文档操作由很多方法。如XML语法解析函数、DOMXML函数和SimpleXML函数等(PHP5新加入的SimpleXML)。

    2.1创建SimpleXML对象

    有三个姿势:

    (1)

    Simplexml_load_file()函数,将制定的文件解析到内存中。

    <?php
        header('Content-type:text/html;charset=utf-8');
        $xml_1 = simplexml_load_file('1.xml');
        print_r($xml_1);
    ?>


    (2)

    Simplexml_load_string()函数,将创建的字符串解析到内存中。

    <?php
        header('Content-type:text/html;charset=utf-8');
    $str=<<<XML
    <?xml version="1.0" encoding="gb2312"?>
    <BOOK>
        <PHP>
            <NAME>XXX</NAME>
            <DATA>XXX-XXX-XXX</DATA>
        </PHP>
    </BOOK>
    XML;
        $xml_2 = simplexml_load_string($str);
        print_r($xml_2);
    ?>


    (3)

    Simplexml_load_date()函数,将一个使用DOM函数创建的DomDocument对象导入到内存中。

    <?php
        header('Content-type:text/html;charset=utf-8');
    $str=<<<XML
    <?xml version="1.0" encoding="gb2312"?>
    <BOOK>
        <PHP>
            <NAME>XXX</NAME>
            <DATA>XXX-XXX-XXX</DATA>
        </PHP>
    </BOOK>
    XML;
        $dom new domDocument();
        $dom -> loadXML($str);
        $xml_3 = simplexml_import_dom($dom);
        print_r($xml_3);
    ?>


    2.2遍历所有子元素

    <?php
        header('Content-type:text/html;charset=utf-8');
        $str=<<<XML
    <?xml version="1.0" encoding="gb2312"?>
    <BOOK>
        <PHP>
            <NAME>XXX</NAME>
            <DATA>XXX-XXX-XXX</DATA>
        </PHP>
        <XXX>
            <NAME>XXX</NAME>
            <DATA>XXX-XXX-XXX</DATA>
        </XXX>
    </BOOK>
    XML;
        $xml = simplexml_load_string($str);
        print_r($xml);
        echo "<br><br><br>";
        foreach($xml->children() as $layer_one){
            print_r($layer_one);
            echo "<br>";
        }
        echo "<br><br>";
        foreach($xml->children() as $layer_one){
            foreach($layer_one->children() as $layer_two) {
                print_r($layer_two);
                echo "<br>";
            }
        }
    ?>


    2.3遍历所有属性

    <?php
        header('Content-type:text/html;charset=utf-8');
        $str=<<<XML
    <?xml version="1.0" encoding="gb2312"?>
    <object name='commdoity'>
        <book type="computerbook">
            <bookname name="XXX"/>
        </book>
       <book type="historybook">
            <bookname name="CCC"/>
        </book>
    </object>
    XML;
        $xml = simplexml_load_string($str);
        foreach($xml->children() as $layer_one){
            foreach($layer_one->attributes() as $name => $vl){
                echo $name."::".$vl."<br>";
            }

            foreach($layer_one->children() as $layer_two){
                foreach($layer_two->attributes() as $name => $vl){
                    echo $name."::".$vl."<br>";
                }
            }
            echo '<br><br>';
        }
    ?>



    2.4访问特定节点和属性

    <?php
        header('Content-type:text/html;charset=utf-8');
        $str=<<<XML
    <?xml version="1.0" encoding="gb2312"?>
    <object name='commdoity'>
        <book>
            <bookname>AAAA</bookname>
        </book>
       <book>
            <bookname name="BBBB"/>
        </book>
    </object>
    XML;
        $xml = simplexml_load_string($str);
        echo $xml['name'].'<br>';
        echo $xml->book[0]->bookname.'<br>';
        echo $xml->book[1]->bookname['name'].'<br>';
    ?>



        后面还有 修改XML数据,保存XML文档,动态创建XML文档 这些都很好理解,因为时间原因就不一个一个的全都写一遍了。直接把书上的例子粘过来把。非常简单。用的时候直接看眼就行了。

     

    2.5修改XML数据



    2.6保存XML文档



    2.7动态创建XML


  • 相关阅读:
    数据结构作业-二叉树
    51nod 1163 最高的奖励
    51nod 1091 线段的重叠
    实验1 顺序表及其应用
    51nod 1459 迷宫游戏 dijkstra模板
    html5拖拽
    onbeforeunload、onpagehide、onunload、onload、onpageshow的正确执行顺序
    HTML5游戏2D开发引擎
    如何定义现代浏览器
    api文档设计工具:RAML、Swagger
  • 原文地址:https://www.cnblogs.com/csnd/p/12061974.html
Copyright © 2011-2022 走看看