php如何读出xml的节点内容 两个例子

第一个例子:

  PHP与XML联系紧密,下面是一个较简单的解析XML节点数据的例子,示例中自定义有一个XML样例文件代码,通过PHP将依次读取出XML节点中的id、name和email数据,是读取较大的XML文件的前提,新手的话,那就更应该参考了

 

01    <?php
02    //定义一个XML样例文件
03    $xml_string="<?xml version='1.0'?>
04    <users>
05    <user id='398'>
06    <name>Foo</name>
07    <email>foo@bar.com</name>
08    </user>
09    <user id='867'>
10    <name>Foobar</name>
11    <email>foobar@foo.com</name>
12    </user>
13    </users>";
14    //开始解析XML
15    $xml = simplexml_load_string($xml_string);
16    foreach ($xml->user as $user)
17    {
18    echo $user['id'], ' ';
19    echo $user->name, ' ';
20    echo $user->email, '<br />';
21    }
22    ?>

 

 

 

 

第二个例子:

Php读取XML情况六,再foreach一次,我们把7,8,9读出来!:

XML文件(cy.xm)如下:
<?xml version="1.0" encoding="gb2312"?>
<xml>
<main>
<list>1</list>
<list>2</list>
<list>3</list>
</main>
<main>
<list>4</list>
<list>5</list>
<list>6</list>
</main>
<m>
<list>7</list>
<list>8</list>
<list>9</list>
</m>
</xml>

Php文件(cy.php)如下:
<?php
$xml = new DOMDocument();
$xml->load('cy.xml');
$main = $xml->getElementsByTagName_r('main');
foreach( $main as $main)
{
$list = $main->getElementsByTagName_r( "list" );
foreach ( $list as $list )
{
$value = $list->firstChild->nodeValue;
echo $value."<br />";
}
}
$m = $xml->getElementsByTagName_r('m');
foreach( $m as $m)
{
$list = $m->getElementsByTagName_r( "list" );
foreach ( $list as $list )
{
$value = $list->firstChild->nodeValue;
echo $value."<br />";
}
}
?>

cy.php输出结果:
1
2
3
4
5
6
7
8
9

===============

Php读取XML情况七,cy.xml变得更复杂一些:

XML文件(cy.xml)如下:
<?xml version="1.0" encoding="gb2312"?>
<xml>
<main>
<title>a</title>
<list>1</list>
<list>2</list>
<list>3</list>
</main>
<main>
<title>b</title>
<list>4</list>
<list>5</list>
<list>6</list>
</main>
<m>
<title>c</title>
<list>7</list>
<list>8</list>
<list>9</list>
</m>
</xml>

那么,我们如何只读出<main></main>内<title></title>中的值呢?

Php文件(cy.php)如下:
<?php
$xml = new DOMDocument();
$xml->load('cy.xml');
$main = $xml->getElementsByTagName_r('main');
foreach( $main as $main)
{
$list = $main->getElementsByTagName_r( "list" );
foreach ( $list as $list )
{
$value = $list->firstChild->nodeValue;
echo $value."<br />";
}
$title = $main->getElementsByTagName_r( "title" );
foreach ( $title as $title )
{
$value = $title->firstChild->nodeValue;
echo $value."<br />";
}
}

$m = $xml->getElementsByTagName_r('m');
foreach( $m as $m)
{
$list = $m->getElementsByTagName_r( "list" );
foreach ( $list as $list )
{
$value = $list->firstChild->nodeValue;
echo $value."<br />";
}
}
?>

cy.php输出结果:
1
2
3
a
4
5
6
b
7
8
9

想一下,如何读出<m>中<title></title>的值?

Php读取XML再通过一个例子巩固一下:

XML文件(cy.xml)如下:
<?xml version="1.0" encoding="gb2312"?>
<LevelOne>
<LevelTwo>
<LevelThree id="1">This is Text One</LevelThree>
<LevelThree id="2">This is Text Two</LevelThree>
<LevelThree id="3">This is Text Three</LevelThree>
</LevelTwo>
<LevelTwo>
<LevelThree id="4">This is Text Four</LevelThree>
<LevelThree id="5">This is Text Five</LevelThree>
<LevelThree id="6">This is Text Six</LevelThree>
</LevelTwo>
</LevelOne>

Php文件(cy.php)如下:

<?php
$xml = new DOMDocument(); //建立一个DOMDocument
$xml->load('cy.xml'); //Php指定需要读取xml文件的位置
$LevelOne = $xml->getElementsByTagName_r('LevelOne');//按照名称取得节点,返回所有节点的集合,不过这里这样读LevelOne是没有意义的....
$LevelOne = $xml->getElementsByTagName_r('LevelOne')->item(0);//返回第一个LevelOne节点中的内容
$LevelTwo = $LevelOne->getElementsByTagName_r('LevelTwo'); //按照名称取得节点,返回所有LevelTwo
foreach ( $LevelTwo as $Content )//循环读出所有LevelTwo,并在循环里,把LevelTwo用Content表示
{
$LevelThree = $Content->getElementsByTagName_r('LevelThree');//返回所有LevelThree
foreach ( $LevelThree as $Concert )
{
$name = $Concert->nodeName;//节点名称
$value = $Concert->nodeValue;//节点值
$id = $Concert->getAttribute('id');//"id"属性值
echo $name."<br />";
echo $value."<br />";
echo $id."<br />";
}
}
?>

如果用$LevelOne = $xml->getElementsByTagName_r('LevelOne')这样的方式取得节点,那么,读取里面的内容,需要用foreach 循环,因为$LevelOne = $xml->getElementsByTagName ('LevelOne')返回的,是一个集合,并不是一个具体的节点----仅管叫做LevelOne的节点只有一个....
如果用$LevelOne = $xml->getElementsByTagName_r('LevelOne')->item(0)这样的方式取得节点,那么读取里面的内 容,可以直接$LevelOne->xxxxxx,因为这样返回的是一个具体的节点。

 

现在提供一种很简便的方法用PHP读取XML:

XML文件(cy.xml)如下:
<?xml version="1.0" encoding="gb2312"?>
<xml>
<site>
<part id="1">
<title id="a">czbin xml版块</title>
<describe>xml的相关文章</describe>
</part>
<part id="2">
<title id="b">czbin php版块</title>
<describe>php的相关文章</describe>
</part>
<part id="3">
<title id="c">czbin ajax版块</title>
<describe>ajax的相关文章</describe>
</part>
</site>
</xml>

Php文件(cy.php)如下:
<?php
$xml = simplexml_load_file('sxml.xml');
$part = $xml->site->part;
foreach ( $part as $content )
{
echo $content['id']."<br />";
echo $content->title."<br />";
echo $content->title['id']."<br />";
echo $content->describe."<br />";
}
?>

cy.php输出结果:
1
czbin xml版块
a
xml的相关文章
2
czbin php版块
b
php的相关文章
3
czbin ajax版块
c
ajax的相关文章

怎么样?的确很简单吧!

转载于:https://www.cnblogs.com/dashafa/p/4024439.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java递归 treeview_treeview递归

1.数据库table A(ID int pk,Value varchar,Fid int)A:ID Value Fid1 value1 02 value2 03 value3 14 vlaue4 15 value5 26 value6 22.递归void BindTree(TreeNodeCollection tnc,string fid){DataView dvds.Tables[0].DefaultView;//…

latex 1图加标题_使用VsCode编译latex心得

本人最早接触latex是刘海洋老师的《latex入门》&#xff0c;大家可自行搜索相关资源查阅&#xff0c;可以作为参考书&#xff0c;不建议从头到尾的翻阅学习。学习窍门在配置好相关软件之后&#xff0c;应当立即编译一个模板&#xff0c;保证能通过。相关的模板如IEEE等学术报告…

Microsoft AJAX Client Library规范的实例

MSDN 帮助&#xff1a; ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_vwdcon/html/285e3a65-b42e-42c5-952d-baf184057899.htm Type.registerNamespace("Demo"); Demo.Person function(firstName, lastName, emailAddress) {this._firstName firstName;this._last…

这就是为什么上帝和魔鬼都喜欢数学......

全世界只有3.14 % 的人关注了爆炸吧知识是上帝的指纹还是魔鬼的聚合物两千多年来&#xff0c;几何学的研究主要集中在欧几里得几何上。正因如此&#xff0c;欧式几何中由直线或曲线、平面或曲面、平直体或曲体所构成的各种几何形状&#xff0c;一直是人类认识自然物体形状的有力…

彻底删除 XP 自带的 Windows Messenger方法

开始->运行->RunDll32 advpack.dll,LaunchINFSection %windir%\INF\msmsgs.inf,BLC.Remove 就这么简单 鲜为人知的安装和卸载绝技&#xff1a;巧用Rundll32&#xff0e;exe在Windows系统中安装和卸载程序是件非常容易的事情&#xff0c;一般用户通过安装和卸载程序向导就…

反向压力

大家好&#xff0c;我是鱼皮&#xff0c;今天分享一个实用的编程小知识 —— 反向压力。在介绍反向压力前&#xff0c;我们先聊聊什么是压力&#xff1f;什么是压力&#xff1f;我是一个打工人&#xff0c;日常工作就是听产品经理的话&#xff0c;写代码做需求。正常打工正常情…

2×3卡方检验prism_卡方独立性检验原理

这篇文章主要讲了两个部分&#xff0c;一个是卡方检验的推导&#xff0c;一个是卡方检验应该取多少样本量。卡方独立性检验是为了检验两个变量是否独立&#xff0c;我们先来回顾一下卡方独立性检验的流程&#xff1a;1、统计列联表&#xff0c;计算观察值&#xff1a;表一图中的…

不断电系统的容量如何计算?

不断电系统的容量如何计算&#xff1f;  1.目前市面上销售的不断电系统大都以VA(视在功率)为单位&#xff0c;V表示电压&#xff0c;A表示电流&#xff0c;电压乘以电流就表示功率&#xff0c;也就是不断电系统的容量&#xff1b;以一部500VA的不断电系统来说明&#xff0c;当…

AVL树----java

AVL树----java AVL树是高度平衡的二叉查找树 1.单旋转LL旋转 理解记忆&#xff1a;1.在不平衡的节点的左孩子的左孩子插入导致的不平衡&#xff0c;所以叫LL private AVLTreeNode<T> leftLeftRotation(AVLTreeNode<T> k2) {AVLTreeNode<T> k1;k1 k2.left;k2…

其实你女朋友也不是很爱你...

1 你玩她口红化妆品试试▼2 我妈介绍的相亲对象优点&#xff1a;每天主动问早缺点&#xff1a;每天只问早▼3 女儿过度高估老爸了▼4 国际油价暴跌全军出击买买买▼5 有人喜欢我吗&#xff1f;我爱吃炸鸡▼6 有厕纸的那部分人还有全球百分之50的双黄连▼7 其实生物书比较…

Gestalt - 在浏览器里用 python/ruby 写客户端脚本

Gestalt 是 Mix Online Lab 创造出来的一个框架&#xff0c;利用它我们可以在浏览器里用 python/ruby 写脚本来操纵 DHTML 的各种对象&#xff0c;其作用就跟 javascript 类似。一个例子&#xff1a;<script language"javascript"src"gestalt.js"/>&…

文末有彩蛋 | 第四周课程回顾与总结

我们在前三周的课程上&#xff08;第一周、第二周、第三周&#xff09;&#xff0c;系统讲授了 FOSS 和 COSS 的课程内容&#xff0c;第四周&#xff0c;我们开始进入 OSPO&#xff08;开源项目办公室&#xff09;的部分。本导学班在调研全球开源教育与课程的基础上&#xff0c…

win10 软路由_「保姆级」万晓博带你用软路由搭建家庭网络中心第1节-准备工作...

本章前言&#xff1a;  去年无意中在群我的一个群里大佬提起过软路由&#xff0c;那时候对这个需求并不是很大&#xff0c;所以对软路由只是名字概念而已&#xff0c;但是后面群里就一软路由这个话题 炒起来了&#xff0c;有的人说软路由就是利用自己闲置设备(PC笔记本)的或者…

doxygen如何生成JAVA文档_有用Doxygen生成文档的吗?发一篇Doxygen的使用文档给大家,从网上搜来的。...

第二章&#xff1a;Documenting the code特殊的注释一种特殊的注释是带有一些额外标记的C/C注释块&#xff0c;这样doxygen就知道需要将其加入到文档中了。对于每个代码块都有两种注释&#xff0c;这两种注释组成了文档&#xff1a;一种是brief 描述另一种是detailed 描述&…

【转】构建Android平台Google Map应用

http://www.moandroid.com/?p1360 Android 的新版本提供了的功能&#xff0c;通过这段视频&#xff0c;大家可以先简单了解下&#xff1a; Android 提供的地图&#xff08;Map&#xff09;功能可能是广大开发者非常关心的一个部分。到目前为止&#xff0c;开发内嵌式地图应用的…

将虚拟机转换成模板

在制作模板前&#xff0c;先要准备一个干净的操作系统&#xff0c;或者安装上经常使用的软件在虚拟机中&#xff0c;安装好后&#xff0c;将其正常关机&#xff0c;之后就可以转换成模板了。转换后的虚拟机将不会在主机管理中看到&#xff0c;而只能在模板中看到。克隆转换时克…

假如你学过高数,那你这一辈子都不会忘记这个人

▲ 点击查看2020年3月&#xff0c;菲列兹伦敦奖评奖委员会宣布&#xff0c;2020年度菲列兹伦敦奖将授予三位科学家&#xff0c;除开美国的 Vinokur 博士、以及德国的Steglich 教授以外&#xff0c;最后一位就是清华大学副校长、北京量子信息科学研究院院长薛其坤院士。薛其坤院…

在VHD文件上安装Windows 7或Windows 2008 R2

以下操作在VMware Workstation 6.5的虚拟环境中操作成功。安装方法&#xff1a;1、以Windows 7或Windows 2008 R2安装光盘启动计算机2、在屏幕出现“现在安装”&#xff0c;同时按ShiftF10&#xff0c;出现一个命令提示窗口。3、依次输入以下命令diskpartlist diskselect disk …

.Net Core with 微服务 - 分布式事务 - TCC

上一次我们讲解了分布式事务的 2PC、3PC 。那么这次我们来理一下 TCC 事务。本次还是讲解 TCC 的原理跟 .NET 其实没有关系。TCC Try 准备阶段&#xff0c;尝试执行业务Confirm 完成业务Cancel 回滚准备阶段的业务TCC 事务其实是 2PC 的一个扩展。上一次我们说了 2PC &#xff…

第10章-管理Hadoop集群-hadoop 安全模式相关知识点

为什么80%的码农都做不了架构师&#xff1f;>>> 1、namenode启动时&#xff0c;namenode节点都做了哪些动作&#xff1f;fsimage和edits有什么变化&#xff1f; 2、namenode什么时候开始监听RPC和HTTP请求&#xff1f; namenode启动时&#xff0c;首先将映像文件(f…