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 . '个人<br>'; //输出共有两个人
// 选中索引为0的person,也就是第一个人
$person = $persons->item ( );
// 在这个person下获取name节点,返回的仍然是一个DOMNodeList类对象
$names = $person->getElementsByTagName ( 'name' );
// 输出姓名
echo $names->item ( )->nodeValue . '<br>'; //输出'张三'
为什么要进行两次取的Nodelist呢?请参照上图,因为有两个节点
demo.xml
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="s101">
<name>zhangsan</name>
<age></age>
</person>
<person>
<name>wangwu</name>
<age></age>
</person>
</persons>
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 ( )
->getElementsByTagName ( 'name' )->item ( )->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 ( );
// 判断节点是否具有id属性
if ($person->hasAttribute ( 'id' )) {
echo '具有id属性';
} else {
echo '没有id属性';
}
echo '<br>';
// 判断节点是否具有属性
if ($person->hasAttributes ()) {
echo '有属性';
} else {
echo '没有任何属性';
}
echo '<br>';
// 得到第一个person的id属性值
echo $person->getAttribute ( 'id' );
之前的例子只能得到一条数据,现在我想得到所有人的完整信息,该如何实现?
示例4:
如果<person id="s101">这种有属性的,也要遍历出来呢?
<?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 = ; $i < $count; $i ++) {
// $person表示第i个人
$person = $persons->item ( $i );
echo '第' . ($i + ) . '个人的';
if ($person->hasAttribute ( 'id' )) {
echo '学号:' . $person->getAttribute ( 'id' );
}
echo '姓名:' . $person->getElementsByTagName ( 'name' )->item ( )->nodeValue;
echo '年龄:' . $person->getElementsByTagName ( 'age' )->item ( )->nodeValue;
echo '<br>';
}
?>
php中的XML DOM(10)的更多相关文章
- JavaScript 【 IE中的XML DOM 】
IE中的 XML DOM 在统一的正式规范出来以前,浏览器对于XML的解决方案各不相同.DOM2级提出了动态创建XML DOM规范,DOM3进一步增强了XML DOM.所以,在不同的浏览器实现XML的 ...
- php中的XML DOM(11)
7.创建节点 在dom操作中,增删改操作必须要找父节点 1.DOMElement DOMDocument::createElement ( string $name [, string $value ...
- javascript快速入门25--浏览器中的XML
打开XML 首先,直接从浏览器中打开XML文件,浏览器会对其进行格式良好性检查,如果不符合XML语法规范则显示出错,如果格式良好,再检查是否包含样式表(CSS或XSL),如果包含样式表,则用样式表格式 ...
- DOM和SAX是应用中操纵XML文档的差别
查看原文:http://www.ibloger.net/article/205.html DOM和SAX是应用中操纵XML文档的两种主要API.它们分别解释例如以下: DOM.即Do ...
- Android中的XML解析
在安卓中主要有三种XML文档解析方式:DOM(Document Object Model), SAX(Simple API for XML), PULL 他们的主要特点如下表: 特点 主要类 DO ...
- 第12章 在.NET中操作XML
12.1 XML概述 12.1.1 为什么要有XML 12.1.2 XML文档结构 (1)文档声明 <?xml version="1.0"encoding="UTF ...
- 4.在浏览器中解析XML
要在浏览器中解析获取XML数据,一般只需经过两个步骤:第一,将XML文档.XML字符串转化成XMLDoc对象.第二,使用JS操作XMLDoc对象. 3.1 将XML文档或XML字符串转化成XMLDoc ...
- Python使用xml.dom解析xml
在菜鸟教程上找了个关于电影信息的xml类型的文档,用python内置的xml.dom来解析提取一下信息. 先复习一下xml概念: XML 指可扩展标记语言(EXtensible Markup Lang ...
- python 之模块之 xml.dom.minidom解析xml
# -*- coding: cp936 -*- #python 27 #xiaodeng #python 之模块之 xml.dom.minidom解析xml #http://www.cnblogs.c ...
随机推荐
- Redis 基础操作
[Redis 基础操作] 1.ECHO message. Returns message. 2.PHING Returns PONG if no argument is provided, other ...
- 词项邻近 & 停用词 & 词干还原
[词项邻近] 邻近操作符(proximity)用于指定查询中的两个词项应该在文档中互相靠近,靠近程度通常采用两者之间的词的个数或者是否同在某个结构单元(如句 子或段落)中出现来衡量. [停用词] 一些 ...
- Shiro01 功能点框图、架构图、身份认证逻辑、身份认证代码实现
基本功能点 功能点框图 功能点说明 1.Authentication:身份认证/登录,验证用户是不是拥有相应的身份: 2.Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个 ...
- FineUI学习
1.无限级菜单绑定 using (DataTable dt = SqlPagerHelper.GetTableByCondition(DefaultConnection.ConnectionStrin ...
- win10 跳过max path 260限制
参考: https://www.howtogeek.com/266621/how-to-make-windows-10-accept-file-paths-over-260-characters/ 注 ...
- 关于anroid设置webview背景方法探讨(转)
最近的项目中一直关于webView设置背景色问题在研究,最终找到了解决的方法. 基于我项目的需求,从服务端传过来的是带有标签的文本,如果使用textView会让整个布局显得很乱,里面的<img ...
- sklearn.metrics import precision_recall_fscore_support
二分类/多分类/多标签 对于二分类来说,必须定义一些matrics(f1_score,roc_auc_score).在这些case中,缺省只评估正例的label,缺省的正例label被标为1(可以通过 ...
- 万网上如何将IP和申请的域名绑定
万网上如何将IP和申请的域名绑定 在万网上购买了域名后,怎么将它和指定的IP进行绑定呢?下面简单介绍下 工具/原料 中国万网账号 购买的域名 服务器 方法/步骤 百度万网,找到网站后, ...
- ACTIVITI 5.14事件监听器的BUG
在ACTIVITI 5.14中,测试内部子流程时发现事件定义的事件监听器不能触发. <activiti:executionListener event="start" del ...
- Oracle学习笔记(八)
十一.子查询 1.子查询概述 学习子查询的原因 事例:查询工资比SCOTT高的员工信息 思路:1.scott的工资 select sal from emp where ename='SCOTT'; 2 ...