使用SimpleXML应该注意的问题有哪些?

  SimpleXML提供了一套简单快速的XML操作方法,大大地提高了XML操作的效率。

  但是有时不小心也会带来不小的麻烦,看下面一段代码:

  $xml=simplexml_load_string(‘<root><title>title</title></root>‘);

  $title=$xml->title;

  echo$title;

  $xml->title=‘test‘;

  echo$title;

  猜猜第二个输出结果会是多少?是‘test‘,而不是想像中的‘title‘。为什么会这样呢?原因在这里:

  echo gettype($xml->title)//object

  echo get_class($xml->title);//SimpleXMLElement

  看到了吗,$xml->title是一个SimpleXMLElement类的实例,而不是字符串。

  SimpleXMLElement应该是实现了一个类似于__tostring()的接口(有兴趣的可以去看一下PHP的源码,在"ext/simplexml/"中),才能在echo等表达式中表现类似于一个字符串。所以还有个地方需要注意:

  $_SESSION[‘test‘]=$xml->title;//保存一个SimpleXMLElement变量到SESSION中。

  $_SESSION[‘test‘]=(string)$xml->title;//字符串

  $_SESSION[‘test‘]=strval($xml->title);//这样也行。

  所以$title实际上保存的是一个到SimpleXMLElement类的一个引用,而不是字符串的副本。想要得到字符串的副本只能进行类型转换:

  $title=(string)$xml->title;//获得字符串

  $xml->title=‘test‘;

  echo$title;//输出title

时间: 2024-10-11 12:06:55

使用SimpleXML应该注意的问题有哪些?的相关文章

HP SimpleXML

PHP SimpleXML PHP SimpleXML 处理最普通的 XML 任务,其余的任务则交由其它扩展处理. 什么是 PHP SimpleXML? SimpleXML 是 PHP 5 中的新特性. SimpleXML 扩展提供了一种获取 XML 元素的名称和文本的简单方式. 与 DOM 或 Expat 解析器相比,SimpleXML 仅仅用几行代码就可以从 XML 元素中读取文本数据. SimpleXML 可把 XML 文档(或 XML 字符串)转换为对象,比如: 元素被转换为 Simpl

php simpleXML操作xml的用法

XML简介 XML是一种流行的半结构化文件格式,以一种类似数据库的格式存储数据.在实际应用中,一些简单的.安全性较低的数据往往使用 XML文件的格式进行存储.这样做的好处一方面可以通过减少与数据库的交互性操作提高读取效率,另一方面可以有效利用 XML的优越性降低程序的编写难度. PHP提供了一整套的读取 XML文件的方法,很容易的就可以编写基于 XML的脚本程序.本章将要介绍 PHP与 XML的操作方法,并对几个常用的 XML类库做一些简要介绍. 1 XML简介 XML是“可扩展性标识语言(eX

simplexml 对xml的增删改操作

simplexml 是php 处理xml 文件的一个方法,另一个是dom 处理,这里只说simplexml .目前php 处理xml 用的比较多,比较成熟的还是dom .但dom 在速度和代码量上还是比较受人诟病的. simplexml 的有些函数需要比较高版本的php ,建议是php5.2 以上. 一,新建xml 方法1 (普通新建文件): <?php /** * @author blog.anchen8.net * @copyright 2016 */ $fp=fopen('xmldoc.x

simplexml和xpath

[xpath查找节点] <?PHP //1.创建DOMDocument对象 $xmldoc = new DOMDocument(); //2.加载xml $xmldoc -> load("xxx.xml"); //3.转成DOMXPath $domXPath = new DOMXPath($xmldoc); //4.使用xpath技术查询需要的节点 $node_list = $domXPath ->query("/AAA/BBB/CCC"); ?&

php操作dom,simplexml、xpath对xml的读取,以及xml作为数据传输接口的使用的认识

php操作xml文档取数据[php对xml的解析] 1.php操作DOM[Document Object Model] 每一个文档从根节点开始构成一个树状模型[DOM] DOM文档类: DOMDocument:文档类 DOMNodeList:节点列表类 DOMNode:节点类 DOMElement:元素类 这四个类就可以针对DOM文档进行操作 2.操作DOM对象 (1)创建DOM对象: $dom = new Document();//对对象的版本,编码进行限制 (2)加载xml文件 $dom->

SimpleXML php 解析xml 的方法

SimpleXML是PHP5后提供的一套简单易用的xml工具集,可以把xml转换成方便处理的对象,也可以组织生成xml数据.不过它不适用于包含namespace的xml,而且要保证xml格式完整(well-formed).它提供了三个方法:simplexml_import_dom.simplexml_load_file.simplexml_load_string,函数名很直观地说明了函数的作用.三个函数都返回SimpleXMLElement对象,数据的读取/添加都是通过SimpleXMLElem

详解SimpleXML添加_修改_删除_遍历XML节点属性

SimpleXML概述 要处理XML 文件,有两种传统的处理思路:SAX 和DOM.SAX 基于事件触发机制,对XML 文件进行一次扫描,完成要进行的处理:DOM 则将整个XML 文件构造为一棵DOM树,通过对DOM 树的遍历完成处理.这两种方法各有优缺点,SAX 的处理思路相对抽象,DOM 的处理过程相对烦琐,都不很适合新手的入门. PHP5 推出了一套新的XML 处理函数,即SimpleXML.名如其实,SimpleXML 本身小巧精干,只提供了少量的几个方法函数,但用它处理起XML 文件功

PHP中simpleXML递归实现XML文件与数组的相互转化(原创)

一.XML文件转换为数组<?php /*******************************************************/ //simpleXML  解析XML文件非常简单 //因为它一次性把XML文件解析成一个大对象 //来个简单的实例 /************************************************ //从文件载入XML文档 //$simxml  =  simplexml_load_file('book.xml'); //prin

php SimpleXML

SimpleXML函数 __construct() 创建一个新的 SimpleXMLElement 对象. 5 addAttribute() 给 SimpleXML 元素添加一个属性. 5 addChild() 给 SimpleXML 元素添加一个子元素. 5 asXML() 从 SimpleXML 元素获取 XML 字符串. 5 attributes() 获取 SimpleXML 元素的属性. 5 children() 获取指定节点的子. 5 getDocNamespaces() 获取 XML