您好,欢迎访问一九零五行业门户网

php中的XML DOM(10)

1.php dom (1)
php中的dom跟javascript不一样,属性不用另外增加一个节点
2.主要类
     domdocument :文档类
     domnodelist :节点列表类
     domnode :节点类
     domelement :元素类
3. domdocument类
  3.1创建文档对象
     domdocument::__construct ([ string $version [, string $encoding ]] )
     [ string $version :版本号
     [, string $encoding ]]:字符集
  3.2、加载xml文件
     mixed domdocument::load ( string $filename)
     string $filename:要加载的xml文件名称
  3.3、获取节点
     domnodelist domdocument::getelementsbytagname ( string name )
     string name:要获取的节点名
示例:demo.php
php header ( 'content-type:text/html;charset=gb2312' );// 利用php解析demo01.xml// 实例化dom对象 $dom = new domdocument ();// 加载xml文件 $dom->load ( 'demo01.xml' );// 通过dom对象获取person节点,注意:这里返回值是一个domnodelist类对象 $persons = $dom->getelementsbytagname ( 'person' );// 共有几个person echo '共有' . $persons->length . '个人
'; //输出共有两个人// 选中索引为0的person,也就是第一个人 $person = $persons->item ( 0 );// 在这个person下获取name节点,返回的仍然是一个domnodelist类对象 $names = $person->getelementsbytagname ( 'name' ); // 输出姓名echo $names->item ( 0 )->nodevalue . '
'; //输出'张三'为什么要进行两次取的nodelist呢?请参照上图,因为有两个节点
demo.xml
zhangsan30wangwu18
4. domnodelist类 (上面的person就是nodelist节点)
  1、length
     当前节点列表中共有几个节点
  2、domelement domnodelist::item ( int $index )
     选中索引为index的节点
     int $index:索引
5、 domnode类
     1、nodevalue 节点的值
6、 关于属性的读取
   1、bool domelement::hasattribute ( string $name )
      判断是否具有某个属性(只判断某个属性下有没有)
      string $name:属性名
   2、bool domnode::hasattributes ( void )
      判断是否具有属性(只要有属性就返回true)
   3、string domelement::getattribute ( string $name )
      获取指定属性的属性值
string $name:属性名
示例2.用连贯操作输出
php $dom = new domdocument ( '1.0', 'utf-8' ); $dom->load ( 'demo01.xml' );// 想得到第一个人的姓名 echo $dom->getelementsbytagname ( 'person' )->item ( 0 ) ->getelementsbytagname ( 'name' )->item ( 0 )->nodevalue;输出:张三
example3:
php header ( 'content-type:text/html;charset=gb2312' ); $dom = new domdocument ( '1.0', 'utf-8' ); $dom->load ( 'demo01.xml' ); $person = $dom->getelementsbytagname ( 'person' )->item ( 0 );// 判断节点是否具有id属性 if ($person->hasattribute ( 'id' )) { echo '具有id属性'; } else { echo '没有id属性'; } echo '
';// 判断节点是否具有属性 if ($person->hasattributes ()) { echo '有属性'; } else { echo '没有任何属性'; } echo '
';// 得到第一个person的id属性值 echo $person->getattribute ( 'id' );
之前的例子只能得到一条数据,现在我想得到所有人的完整信息,该如何实现?
示例4:
如果这种有属性的,也要遍历出来呢?
php header ( 'content-type:text/html;charset=gb2312' ); $dom = new domdocument ( '1.0', 'utf-8' ); $dom->load ( 'demo01.xml' );// 得到所有person节点 $persons = $dom->getelementsbytagname ( 'person' );// 得到总人数 $count = $persons->length; for($i = 0; $i ) { // $person表示第i个人 $person = $persons->item ( $i ); echo '第' . ($i + 1) . '个人的'; if ($person->hasattribute ( 'id' )) { echo '学号:' . $person->getattribute ( 'id' ); } echo '姓名:' . $person->getelementsbytagname ( 'name' )->item ( 0 )->nodevalue; echo '年龄:' . $person->getelementsbytagname ( 'age' )->item ( 0 )->nodevalue; echo '
'; }?>
以上就介绍了php中的xml dom(10),包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。
其它类似信息

推荐信息