PHP simplexml_load_string() 函数
PHP SimpleXML 扩展的 simplexml_load_string() 函数转换形式良好的 XML 字符串为 SimpleXMLElement 对象
( PHP >= 5)
函数原型
simplexml_load_string(data,classname,options,ns,is_prefix);
参数
参数 | 描述 |
---|---|
data | 必需。形式良好的 XML 字符串 |
classname | 可选。新对象的 class |
options | 可选。附加的 Libxml 参数 通过指定选项为 1 或 0(TRUE 或 FALSE,例如 LIBXML_NOBLANKS(1))进行设置 |
ns | 可选。规定命名空间前缀或 URI |
is_prefix | 可选。一个布尔值 如果 ns 是前缀则为 TRUE 如果 ns 是 URI 则为 FALSE 默认是 FALSE |
参数 options 可选的值如下
值 | 说明 |
---|---|
LIBXML_COMPACT | 激活节点的优化配置(可加速应用程序) |
LIBXML_DTDATTR | 设置默认的 DTD 属性 |
LIBXML_DTDLOAD | 装载额外的子集 |
LIBXML_DTDVALID | 验证 DTD 有效性 |
LIBXML_NOBLANKS | 删除空节点 |
LIBXML_NOCDATA | 将 CDATA 设置为文本节点 |
LIBXML_NOEMPTYTAG | 扩展空标签(例如 <br/> 到 <br></br>) 仅在 DOMDocument->save() 和 DOMDocument->saveXML() 函数中有效 |
LIBXML_NOENT | 替代实体 |
LIBXML_NOERROR | 不显示错误报告 |
LIBXML_NONET | 装载文档时停止访问网络 |
LIBXML_NOWARNING | 不显示警告报告 |
LIBXML_NOXMLDECL | 当存储一个文档时放弃 XML 声明 |
LIBXML_NSCLEAN | 删除多余的名称空间声明 |
LIBXML_PARSEHUGE | 设置 XML_PARSE_HUGE 标志,用来放宽解析器的任何强制限制 这将影响诸如文档的最大深度和文本节点大小限制等 |
LIBXML_XINCLUDE | 使用 XInclude 替代 |
LIBXML_ERR_ERROR | 获取可纠正的错误 |
LIBXML_ERR_FATAL | 获取致命错误 |
LIBXML_ERR_NONE | 不获取错误 |
LIBXML_ERR_WARNING | 获取简单警告 |
LIBXML_VERSION | 获取 libxml 版本(例如 20605 或 20617) |
LIBXML_DOTTED_VERSION | 获取带点的 libxml 版本(例如 2.6.5 或 2.6.17) |
返回值
如果成功则返回 SimpleXMLElement 对象,如果失败则返回 FALSE
范例
下面的代码转换形式良好的 XML 字符串为 SimpleXMLElement 对象
然后输出对象的键和元素
<?php $note = <<<XML <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> XML; $xml=simplexml_load_string($note); print_r($xml);
运行以上 PHP 范例,输出结果如下
SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don't forget me this weekend! )
范例 2
输出 XML 字符串中每个元素的数据
<?php $note = <<<XML <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> XML; $xml=simplexml_load_string($note); echo $xml->to , "<br>"; echo $xml->from , "<br>"; echo $xml->heading , "<br>"; echo $xml->body;
运行以上 PHP 范例,输出结果如下
Tove Jani Reminder Don't forget me this weekend!
范例 3
输出 XML 字符串中每个子节点的元素名称和数据
<?php $note=<<<XML <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> XML; $xml=simplexml_load_string($note); echo $xml->getName() , "<br>"; foreach($xml->children() as $child) { echo $child->getName() . ": " , $child , "<br>"; }
运行以上 PHP 范例,输出结果如下
note to: Tove from: Jani heading: Reminder body: Don't forget me this weekend!