• php读取xml的神器


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

    <humans>

    <zhangying>

    <name>张映</name>

    <sex>男</sex>

    <old>28</old>

    </zhangying>

    <tank>

    <name>tank</name>

    <sex>男</sex>

    <old>28</old>

    </tank>

    </humans>

    1)DOMDocument读取xml

    <?php

    $doc = new DOMDocument();

    $doc->load('person.xml'); //读取xml文件

    $humans = $doc->getElementsByTagName_r( "humans" ); //取得humans标签的对象数组

    foreach( $humans as $human )

    {

    $names = $human->getElementsByTagName_r( "name" ); //取得name的标签的对象数组

    $name = $names->item(0)->nodeValue; //取得node中的值,如<name> </name>

    $sexs = $human->getElementsByTagName_r( "sex" );

    $sex = $sexs->item(0)->nodeValue;

    $olds = $human->getElementsByTagName_r( "old" );

    $old = $olds->item(0)->nodeValue;

    echo "$name - $sex - $old\n";

    }

    ?>

    2)simplexml读取xml

    <?php

    $xml_array=simplexml_load_file('person.xml'); //将XML中的数据,读取到数组对象中

    foreach($xml_array as $tmp){

    echo $tmp->name."-".$tmp->sex."-".$tmp->old."<br>";

    }

    ?>

    3)用php正则表达式来记取数据 / http://www.pprar.com  

    <?php

    $xml = "";

    $f = fopen('person.xml', 'r');

    while( $data = fread( $f, 4096 ) ) {

    $xml .= $data;

    }

    fclose( $f );

    // 上面读取数据

    preg_match_all( "/\<humans\>(.*?)\<\/humans\>/s", $xml, $humans ); //匹配最外层标签里面的内容

    foreach( $humans[1] as $k=>$human )

    {

    preg_match_all( "/\<name\>(.*?)\<\/name\>/", $human, $name ); //匹配出名字

    preg_match_all( "/\<sex\>(.*?)\<\/sex\>/", $human, $sex ); //匹配出性别

    preg_match_all( "/\<old\>(.*?)\<\/old\>/", $human, $old ); //匹配出年龄

    }

    foreach($name[1] as $key=>$val){

    echo $val." - ".$sex[$key][1]." - ".$old[$key][1]."<br>" ;

    }

    ?>

    4)xmlreader来读取xml数据

    <?php

    $reader = new XMLReader();

    $reader->open('person.xml'); //读取xml数据

    $i=1;

    while ($reader->read()) { //是否读取

    if ($reader->nodeType == XMLReader::TEXT) { //判断node类型

    if($i%3){

    echo $reader->value; //取得node的值

    }else{

    echo $reader->value."<br>" ;

    }

    $i++;

    }

    }

    ?>

    三,小结

    读取xml的方法很多,简单举几个。上面四种方法都是可以把标签中的数据读出来,<name>张映</name>.但是他们的测重点不同,前三种方法的读取xml的function的设计重点,是为了读取标签中的值,相当于jquery中的text()方法,而 xmlreader呢他就不太一样,他的重点不在读取标签中的值,而读取标签的属性,把要传送的数据,都放在属性中(不过我上面写的那个方法还是取标签中的值,因为xml文件已经给定了,我就不想在搞xml文件出来了)。举个例子解释一下,

    <data name=’张映’ sex=’男’ old=’28′></data>

    xmlreader的设计重点是为了读data里面的name sex old的值,而读取<data></data>的内容就比较麻烦了。他相当于jquery中attr(”);这个东西。

    大家如果有好的办法读取xml,可以加上

  • 相关阅读:
    项目职责
    hibernate配置文件hibernate.cfg.xml的详细解释
    Hibernate环境搭建
    struts2标签使用详解
    EL表达式
    getparameter()和getattribution()的区别的 java详细
    形式参数和实在参数
    JSTL详解实例
    论文ei,sci检索,JCR-SCI分区,中科院分区连接
    随机森林实例
  • 原文地址:https://www.cnblogs.com/php0368/p/3542574.html
Copyright © 2020-2023  润新知