什么是 PHP SimpleXML?
SimpleXML 是 PHP 5 中的新特性。
PHP SimpleXML 处理最普通的 XML 任务,其余的任务则交由其它扩展处理。
SimpleXML 扩展提供了一种获取 XML 元素的名称和文本的简单方式。
与 DOM 或 Expat 解析器相比,SimpleXML 仅仅用几行代码就可以从 XML 元素中读取文本数据。
SimpleXML 可把 XML 文档(或 XML 字符串)转换为对象,比如:
元素被转换为 SimpleXMLElement 对象的单一属性。当同一级别上存在多个元素时,它们会被置于数组中。 属性通过使用关联数组进行访问,其中的索引对应属性名称。 元素内部的文本被转换为字符串。如果一个元素拥有多个文本节点,则按照它们被找到的顺序进行排列。当执行类似下列的基础任务时,SimpleXML 使用起来非常快捷:
读取/提取 XML 文件/字符串的数据 编辑文本节点或属性然而,在处理高级 XML 时,比如命名空间,最好使用 Expat 解析器或 XML DOM。
从 PHP 5 开始,SimpleXML 函数是 PHP 核心的组成部分。无需安装就可以使用这些函数。
假设我们有如下的 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 文件的不同信息:
输出 $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! )输出 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!输出每个子节点的元素名称和数据:
<?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!
Array转XML
$money = 101; $sender = "xxxxx"; $obj2 = array(); $obj2['wxappid'] = APPID; $obj2['mch_id'] = MCHID; $obj2['mch_billno'] = MCHID.date('YmdHis').rand(1000, 9999); $obj2['client_ip'] = $_SERVER['REMOTE_ADDR']; $obj2['re_openid'] = $openid; $obj2['total_amount'] = $money; $obj2['min_value'] = $money; $obj2['max_value'] = $money; $obj2['total_num'] = 1; $obj2['nick_name'] = $sender; $obj2['send_name'] = $sender; $obj2['wishing'] = "你好世界"; $obj2['act_name'] = "你好"; $obj2['remark'] = "大家好";转换后
<xml> <wxappid><![CDATA[wx1b7559b818e3c123]]></wxappid> <mch_id>1235571234</mch_id> <mch_billno>1235571234201605241726128109</mch_billno> <client_ip><![CDATA[127.0.0.1]]></client_ip> <re_openid><![CDATA[oiPuduGV7gJ_MOSfAWpVmhhgXh-U]]></re_openid> <total_amount>101</total_amount> <min_value>101</min_value> <max_value>101</max_value> <total_num>1</total_num> <nick_name><![CDATA[方倍工作室]]></nick_name> <send_name><![CDATA[方倍工作室]]></send_name> <wishing><![CDATA[恭喜发财]]></wishing> <act_name><![CDATA[方倍工作室送红包]]></act_name> <remark><![CDATA[关注公众账号]]></remark> </xml>XML转为Array
<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[发表成功]]></return_msg> <result_code><![CDATA[SUCCESS]]></result_code> <err_code><![CDATA[MONEY_LIMIT]]></err_code> <err_code_des><![CDATA[发表成功]></err_code_des> <mch_billno><![CDATA[1235571234201605241651123985]]></mch_billno> <mch_id>1235571234</mch_id> <wxappid><![CDATA[wx1b7559b818e3c123]]></wxappid> <re_openid><![CDATA[oiPuduGV7gJ_MOSfAWpVmhhgXh-U]]></re_openid> <total_amount>1</total_amount> </xml>转换后
array(10) { ["return_code"]=> string(7) "SUCCESS" ["return_msg"]=> string(12) "发表成功" ["result_code"]=> string(7) "SUCCESS" ["err_code"]=> string(11) "MONEY_LIMIT" ["err_code_des"]=> string(12) "发表成功" ["mch_billno"]=> string(28) "1235571234201605241651123985" ["mch_id"]=> string(10) "1235571234" ["wxappid"]=> string(18) "wx1b7559b818e3c123" ["re_openid"]=> string(28) "oiPuduGV7gJ_MOSfAWpVmhhgXh-U" ["total_amount"]=> string(1) "1" }