zoukankan      html  css  js  c++  java
  • PHP 自学之路-----XML编程(Xpath技术,simpleXml技术)基础入门

     

    XPAth技术

           XPath的设计的核心思想,可以通过xpath迅速简介的定位到你希望查找的节点。主要目的是描述节点相对其他节点的位置,可以取得所有符合条件的节点,成为[位置路径]。

         Xapth主要用来在XML文档中查询信息的工具,通过使用路径表达式可以解析XML文件,读取XML文件中的数据

    下面以案例来介绍,XML 文件如下(simplexml.xml):

    <?xml version="1.0" encoding="UTF-8"?>
    <books>
        <book house="qinghuachubanshe">
            <code>sb001</code>
            <price>200</price>
            <author>xiaoming</author>
            <title>tianlongbabu</title>
        </book>
        <book house="beidachubanshe">
            <code>sb002</code>
            <price>400</price>
            <author>daming</author>
            <title>xiaoaojianghu</title>
        </book>
    </books>

    PHP 代码如下:

    <?php
        //1 创建DOMDocument对象
        $dom = new DOMDocument("1.0", "UTF-8");
        
        //2 加载Xml文件
        $dom->load("simplexml.xml");
        
        //3 转成DomXPath对象
        $xpath = new DOMXPath($dom);
        
        //4 查找工作
        
        $node_list = $xpath->query("/books/book/title");
        echo "一共有".$node_list->length."个<br/>";
        for($i=0; $i<$node_list->length;$i++){
        	
        	 $node = $node_list->item($i);
        	// var_dump($node_list);
        	/*foreach ($node as $key=>$val){
        		echo
    } */
        	 echo $node->nodeName.":".$node->nodeValue."<br/>";
        }
    ?>

    输入如下:

    一共有2个
    title:tianlongbabu
    title:xiaoaojianghu

    想更深入得了解XPath的使用,请参考XPath文档:http://download.csdn.net/detail/jsh13417/6042671

     

    simpleXml

          simpleXMl的核心思想:以面向对象的方法来操作Xml文件。simpleXml是比较简单的方式,通常会和XPath配合使用,

    <?php
    
        //装载方式1 ‘装载一个Xml文件
       // $lib = simplexml_load_file("simplexml.xml");
        //2    DOM 对象装载方式
        //1 创建DOMDocument对象
        $dom = new DOMDocument("1.0", "UTF-8");
        
        //2 加载Xml文件
        $dom->load("simplexml.xml");
        
        $lib = simplexml_import_dom($dom);
    
        echo "<pre>";
       // var_dump($lib);/*1*/
        echo "</pre>";
        
        //取出书,
        $books = $lib->book;
        /* //取出第一本书
        $book1=$books[0];
        //取出书名
        echo $book1->title.":".$book1->author; */
        for($i=0;$i<count($books);$i++){
        	$book1=$books[$i];
        	//取出属性
        	echo "属性:".$book1['house']."<br/>";
        	echo "第".$i."本书的 书名||作者<br/>";
        	echo $book1->title."||".$book1->author."<br/>"; 
        }
        
    
        echo "***simplexml 和xpath结合使用***<br/>";
        echo "取出所有的书名:<br/>";
        $titles = $lib->xpath("//title");
        foreach ($titles as $key=>$val){
        	echo "<br/>".$key."||".$val;
        }
        echo "<br/>*********************************";
    ?>
    输出如下:
    属性:qinghuachubanshe
    第0本书的 书名||作者
    tianlongbabu||xiaoming
    属性:beidachubanshe
    第1本书的 书名||作者
    xiaoaojianghu||daming
    ***simplexml 和xpath结合使用***
    取出所有的书名:
    
    0||tianlongbabu
    1||xiaoaojianghu
    *********************************

       第三种转载Xml方式,字符串方式,如下:

    <?php
    echo "<br/>simplexml也可以直接装载一个string字符串(Xml规范)";
    
    $string = <<<XML
    <?xml version='1.0'?> 
    <document>
     <title>Forty What?</title>
     <from>Joe</from>
     <to>Jane</to>
     <body>
      I know that's the answer -- but what's the question?
     </body>
    </document>
    XML;
    
    $xml = simplexml_load_string($string);
    
    print_r($xml);
    
    ?>


    以上便是对 2个Xml技术的简单入门介绍,想更深入的了解就需要看文档了。

    参考资料:
  • 相关阅读:
    用于对象JSON.parse()和JSON.stringify()
    注册地址从零开始学建站域名篇
    类数据成员点类派生出圆类
    事件原因Stack Overflow at line:0 IE下解决方案
    连接参数SqlServer跨服务器查询
    进程子进程linux系统编程之进程(二):fork函数详细分析
    插件在线BookBlock:一个实现翻页效果的jQuery插件
    区域实现Android实现图片的裁剪(不调用系统功能)
    方法数据库android轻量型数据库sqlite的使用方法汇总
    编译用户Orcle的package中访问其它Schema的表
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3294052.html
Copyright © 2011-2022 走看看