• 【万能的数据传输格式XML入门教程】五、PHP DOM模型详解


    1. 与面、串、点相关的类

    DOMDocument:文档类(面)
    DOMNodeList:列表类(串)
    DOMNode:节点类(点)
    DOMElement:元素类(点)

    2. 开辟内存空间形成面

    public DOMDocument::__construct ([ string $version [, string $encoding ]] )

    主要功能:创建一个文档类对象,形成“面”

    参数 说明
    $version XML版本,默认为1.0
    $encoding XML编码格式,默认为UTF-8
    // 1、开辟内存空间,形成“面”
    $dom = new DOMDocument('1.0','UTF-8');
    var_dump($dom);

    运行结果:

    3. 载入XML文档到内存,形成DOM树

    public mixed DOMDocument::load ( string $filename [, int $options = 0 ] )

    主要功能:载入XML到内存,形成DOM树

    参数 说明
    $filename 要载入的文档名称
    // 2、载入XML文档到内存,形成DOM树
    $dom->load('data.xml');

    4. PHP DOM模型完成查询功能

    PHP DOM模型查询四步走:

    第一步:开辟内存空间,形成“面”
    第二步:载入XML文档到内存,形成DOM树
    第三步:获取同级的兄弟节点,形成“串”
    第四步:根据相关条件,获取要查询的“点”

    public DOMNodeList DOMDocument::getElementsByTagName ( string $name )

    主要功能:根据元素的名称获取同级兄弟节点,形成“串”

    主要功能:根据相关条件获取要查询的点

    参数 说明
    $length 获取节点的数量
    item(int $index) 根据元素的索引来获取要查询的节点,默认从0开始

    主要功能:通过nodeValue获取要查询的点的值
    解析:item选项获取的点是DOMElement类对象,又由于DOMElement继承了DOMNode,所以在开发中可以通过item选项获取的点并结合DOMNode下的nodeValue属性获取其值。

    // 设置响应头信息
    header('Content-type:text/html; charset=utf-8');
    // 1、开辟内存空间,形成“面”
    $dom = new DOMDocument('1.0', 'UTF-8');
    // var_dump($dom);
    // 2、载入XML文档到内存,形成DOM树
    $dom->load('data.xml');
    // 3、获取同级兄弟节点,形成“串”
    $titles = $dom->getElementsByTagName('title');
    echo "当前共有{$titles->length}个title节点";
    echo '<hr />';
    // 4、根据查询条件获取要查询的点
    echo $dom->getElementsByTagName('title')->item(0)->nodeValue;

    data.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <library>
        <book id="b001">
            <title>西游记</title>
            <price>168.00</price>
            <author>吴承恩</author>
            <publish>中国文学出版社</publish>
        </book>
        <book id="b002">
            <title>红楼梦</title>
            <price>99.80</price>
            <author>曹雪芹</author>
            <publish>红楼研究会</publish>
        </book>
        <book>
            <title>三国演义</title>
            <price>198.00</price>
            <author>罗贯中</author>
            <publish>三国演义研究学会</publish>
        </book>
    </library>

    运行结果:

    5. PHP DOM模型遍历输出数据

    // 设置响应头信息
    header('Content-type:text/html; charset=utf-8');
    // 1、开辟内存空间,形成“面”
    $dom = new DOMDocument('1.0', 'utf-8');
    // 2、载入xml数据到内存,形成DOM树结构
    $dom->load('data.xml');
    // 3、根据元素名称获取同级兄弟节点
    $length = $dom->getElementsByTagName('book')->length;
    // 4、通过for循环遍历输出所有的图书信息
    for($i=0;$i<$length;$i++) {
        // 5、通过查询条件获取要查询到的点,并通过nodeValue输出其值
        echo $dom->getElementsByTagName('title')->item($i)->nodeValue.'<br />';
        echo $dom->getElementsByTagName('price')->item($i)->nodeValue.'<br />';
        echo $dom->getElementsByTagName('author')->item($i)->nodeValue.'<br />';
        echo $dom->getElementsByTagName('publish')->item($i)->nodeValue.'<hr />';
    }

    运行结果:

  • 相关阅读:
    eclipse 插件编写(三)(转)
    eclipse 插件编写(二)
    eclipse 插件编写(一)(转)
    js 中的 this 关键字
    js中创建对象的几种方式
    js 如何中如何理解对象?
    项目中的小技巧
    王国维的诗
    uni-app 基础组件
    登庐山 毛
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522281.html
Copyright © 2020-2023  润新知