第一个例子:

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

php如何读出xml的节点内容 两个例子相关推荐

  1. Merkle 树——空间换时间,分而治之的hash表,通过根节点是由它的两个子节点内容的哈希值组成来校验数据完整性,定位篡改的数据位置...

    Merkle 树 图 1.5.6.1 - Merkle 树示例 默克尔树(又叫哈希树)是一种二叉树,由一个根节点.一组中间节点和一组叶节点组成.最下面的叶节点包含存储数据或其哈希值,每个中间节点是它的 ...

  2. php获取xml某个节点的所有内容,怎样输出XML所有的同名节点内容?

    现有的PHP代码输出XML节点时,只能输出第一个同名节点内容"100". 请问怎样才能输出所有节点的内容呢? 现有代码: /* $xmlstring 原内容: - id*cn 10 ...

  3. 根据XPATH去查看修改xml文件节点的内容

    首先给出xml文件解析的路径,然后去读取节点的内容. package com.inetpsa.eqc.threads;import java.util.List; import java.io.Fil ...

  4. Xml解析常用的两种方式

    Xml解析常用的两种方式 Xml解析常用的两种方式dom. DOM4J 下面我们先看一下这两种方式的优缺点: 1.DOM解析的特点是将整个xml文档以树形结构放入到内存中,是官方推荐标准,优点是在内存 ...

  5. xml批量修改php,通过php修改xml文档内容的方法

    本文实例讲述了通过php修改xml文档内容的方法,.具体实现方法如下: 代码如下:<?php //1.创建一个DOMDocument对象.该对象就表示 xml文件 $xmldoc = new D ...

  6. python里遍历筛选xml文件_python xml.etree.ElementTree遍历xml所有节点实例详解

    python xml.etree.ElementTree遍历xml所有节点 XML文件内容: 代码: #-*- coding: UTF-8 -*- # 从文件中读取数据 import xml.etre ...

  7. java获取返回xml节点里的值,关于用java读取xml中节点的值解决方案

    关于用java读取xml中节点的值 在写个工程,用到了如下配置的XML文档,时间紧没法网上资料太多一时看了头大,实在不知道怎么解析了,各位大神麻烦指教一下. 配置文档内容如下 hibernate-co ...

  8. XML DOM 节点类型(Node Types)

    实例 在下面的例子中,我们将使用 XML 文件 books.xml,以及 JavaScript 函数 loadXMLDoc(). 显示所有元素的节点名称和节点类型 显示所有元素的节点名称和节点值 节点 ...

  9. Java高级开发反射手段更换对象根节点内容

    新建对像类,其中包括两个私有属性 class Person {//定义对象的两个私有属性private String name = "张三";private String age ...

最新文章

  1. Spring Cloud【Finchley】-12使用Hystrix Dashboard实现Hystrix数据的可视化监控
  2. php7 魔术引号,PHP魔术引号所带来的安全问题分析
  3. Delphi2010组件/控件安装方法
  4. Linux按照CPU、内存、磁盘IO、网络性能监测
  5. java fastjson vector转为json_java对象与Json字符串之间的转化(fastjson)
  6. 深度学习工作笔记003---数据预处理:独热编码(One-Hot Encoding)
  7. java案例代码13--斗地主部分代码--静态ArrayList的使用
  8. cmos逻辑门传输延迟时间_什么是TTL电平、CMOS电平?区别是什么?
  9. 总结几款国内外在线的神级抠图工具
  10. 对论文中模型进行编程实现时的注意要求和总结
  11. python3注册全局热键
  12. python和scre_前端大牛们都学过哪些东西?
  13. ASP.NET的图片上传和显示
  14. 5G课程笔记--华为ICT课堂(初学)(二)
  15. 认识Python(python起源、设计、特点及编译型语言、解释型语言)
  16. C++中值传递(pass-by-value)和引用传递(pass-by-reference)
  17. oracle中where条件后用in这样子查询后变慢
  18. 只见华为高工资!殊不知华为员工有16条高标准
  19. linux里面的注释命令是啥,bash脚本中单行及多行注释方法
  20. python程序设计黄锐军测验答案_Python程序设计

热门文章

  1. 说说 Spring 的事务同步管理器
  2. Kotlin防止按钮多次点击
  3. 新手学习Java必需要知道的这些基本概念!
  4. Finally语句块的运行
  5. Jetty 类载入问题处理
  6. hibernate 环境搭建测试
  7. haproxy搭建web群集
  8. Nginx支持比Apache高并发的原因
  9. CentOS6.4安装Vbox增强包
  10. struct and union