PHP 可以基于 SimpleXML 生成和解析 xml 的方法,通过本节的实例,你将了解 PHP 是如何使用 SimpleXML 生成及解析 xml 格式数据的。

PHP SimpleXML 处理最普通的 XML 任务,其余的任务则交由其它扩展处理。


什么是 PHP SimpleXML?

SimpleXML 是 PHP 5 中的新特性。

SimpleXML 扩展提供了一种获取 XML 元素的名称和文本的简单方式。

与 DOM 或 Expat 解析器相比,SimpleXML 仅仅用几行代码就可以从 XML 元素中读取文本数据。

SimpleXML 可把 XML 文档(或 XML 字符串)转换为对象,比如:

  • 元素被转换为 SimpleXMLElement 对象的单一属性。当同一级别上存在多个元素时,它们会被置于数组中。
  • 属性通过使用关联数组进行访问,其中的索引对应属性名称。
  • 元素内部的文本被转换为字符串。如果一个元素拥有多个文本节点,则按照它们被找到的顺序进行排列。

当执行类似下列的基础任务时,SimpleXML 使用起来非常快捷:

  • 读取/提取 XML 文件/字符串的数据
  • 编辑文本节点或属性

然而,在处理高级 XML 时,比如命名空间,最好使用 Expat 解析器或 XML DOM。


安装

从 PHP 5 开始,SimpleXML 函数是 PHP 核心的组成部分。无需安装就可以使用这些函数。


PHP SimpleXML 实例

假设我们有如下的 XML 文件,"note.xml":

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

现在我们想要输出上面的 XML 文件的不同信息:

实例 1

输出 $xml 变量(是 SimpleXMLElement 对象)的键和元素:

<?php
$xml=simplexml_load_file("note.xml");
print_r($xml);
?>

运行实例 »

以上代码将输出:

SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don't forget me this weekend! )

实例 2

输出 XML 文件中每个元素的数据:

<?php
$xml=simplexml_load_file("note.xml");
echo $xml->to . "<br>";
echo $xml->from . "<br>";
echo $xml->heading . "<br>";
echo $xml->body;
?>

运行实例 »

以上代码将输出:

Tove
Jani
Reminder
Don't forget me this weekend!

实例 3

输出每个子节点的元素名称和数据:

<?php
$xml=simplexml_load_file("note.xml");
echo $xml->getName() . "<br>";

foreach($xml->children() as $child)
{
echo $child->getName() . ": " . $child . "<br>";
}
?>

运行实例 »

以上代码将输出:

note
to: Tove
from: Jani
heading: Reminder
body: Don't forget me this weekend!

PHP XML SimpleXML的更多相关文章

  1. ***codeigniter操作xml(Simplexml第三方扩展)

    This Simplexml class provides an alternative implementation of the SimpleXML API that works under PH ...

  2. php类库安装xml simplexml

    问题 报错:Call to undefined function dom_import_simplexml() yum install php-dom service restart httpd 参考 ...

  3. PHP-过滤器-连接数据库-解析XML

    PHP 过滤器 what? PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入. 验证和过滤用户输入或自定义数据是任何 Web 应用程序的重要组成部分. 设计 PHP 的过滤器扩展的目的 ...

  4. Php-SPL库中的迭代器类详解(转)

    SPL提供了多个迭代器类,分别提供了迭代访问.过滤数据.缓存结果.控制分页等功能.,因为php总是在不断壮大,我尽可能列出SPL中所有的迭代类.下面其中一些迭代器类是需要php5.4,另外一些如Sea ...

  5. 【SPL标准库专题(2)】 Iterator

    Iterator界面 本段内容来自阮一峰老师再加自己的部分注解 SPL规定,所有部署了Iterator界面的class,都可以用在foreach Loop中.Iterator界面中包含5个必须部署的方 ...

  6. php常用知识集锦

    php常用知识集锦 很多位置都有写好的代码,自己做项目的时候可以直接拿来用,而不用自己写,比如现在看到的菜鸟教程. 1.判断是否为空 empty($_POST["name"]) 2 ...

  7. php学习笔记(初学者入门)

    <?php其他 isset() 变量是否存在 boolean empty() 检查变量是否存在,并判断值是否为非空或非0 void unset() 销毁变量 header('Content-Ty ...

  8. PHP中遍历XML之SimpleXML

    简单来讲述一些XML吧,XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言.XML是当今用于传输数据的两大工具之一,另外一个是json. 我们在PHP中使用XML也是用来传输数据, ...

  9. SimpleXML操控XML

    复杂字符串如下: $_xml=<<<_xml <?xml version="1.0" encoding="utf-8"?> < ...

随机推荐

  1. JavaEE EL & JSTL 学习笔记

    1. EL表达式(特别重要)

  2. Django:(博客系统)使用使用mysql数据&创建post/category/tag实体,并同步到数据中

    背景: 之前也读过一些关于django的一些书,看过别人写的一些博客系统.但是总有一种看别人的都会,但自己写不出来的感觉,于是为了加深对django的学习就开始动手学习了. 环境搭建: 环境:使用py ...

  3. hdu-2602&&POJ-3624---01背包裸题

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2602 https://vjudge.net/problem/POJ-3624 都是01背包的裸题 这 ...

  4. 'NoneType' object is not iterable

    "TypeError: 'NoneType' object is not iterable" 一般是返回值为None同时赋值给了多个变量

  5. #定义一个方法get_num(num),num参数是列表类型,判断列表里面的元素为数字类型。其他类型则报错,并且返回一个偶数列表:(注:列表里面的元素为偶数)。

    #定义一个方法get_num(num),num参数是列表类型,判断列表里面的元素为数字类型.其他类型则报错,并且返回一个偶数列表:(注:列表里面的元素为偶数). def get_num(num): i ...

  6. Maven 本地仓库明明有jar包,pom文件还是报错解决办法

    方法一: 找到出错的jar包文件位置,删掉_maven.repositories文件 方法二: maven中的本地仓库的index索引没有更新导致 解决方案: 在eclipse中打开菜单 window ...

  7. 数十种TensorFlow实现案例汇集:代码+笔记(转)

    转:https://www.jiqizhixin.com/articles/30dc6dd9-39cd-406b-9f9e-041f5cbf1d14 这是使用 TensorFlow 实现流行的机器学习 ...

  8. 是否可能两个ETH私钥对应同一个地址

    原提问在这里. 笔者在使用到neon-js中的私钥生成方法时发现其使用了getRandomValues方法来生成64字符长度的私钥,进而考虑到其随机性,若是调用足够多次,依然有可能生成两个完全一样的私 ...

  9. Java 中的时间日期 API

    自从 14 年发布 Java 8 以后,我们古老 java.util.Date 终于不再是我们 Java 里操作日期时间的唯一的选择. 其实 Java 里的日期时间的相关 API 一直为世猿诟病,不仅 ...

  10. 神在夏至祭降下了神谕(oracle)

    首先这道题样例很多,先一个一个看 我们发现k为奇数是必为winter,其实可以证明 k为奇数时,k=a+(a+1)意味着可以直接实现winter士兵+1,summer士兵-1 k为偶数时,显然当m也为 ...