加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP SimpleXML对象中消失的属性?

发布时间:2020-12-13 18:20:09 所属栏目:PHP教程 来源:网络整理
导读:我需要返回一个转换为 JSON对象的SimpleXML对象,以便在 JavaScript中使用它.问题是任何具有值的对象都没有属性. 举个例子: customer editable="true" maxChars="9" valueType="numeric"69236/customer 变为SimpleXML对象: "customer":"69236" @attributes
我需要返回一个转换为 JSON对象的SimpleXML对象,以便在 JavaScript中使用它.问题是任何具有值的对象都没有属性.

举个例子:

<customer editable="true" maxChars="9" valueType="numeric">69236</customer>

变为SimpleXML对象:

"customer":"69236"

@attributes对象在哪里?

这让我疯了几次.当SimpleXML遇到只有文本值的节点时,它会删除所有属性.我的解决方法是在使用SimpleXML解析之前修改XML.使用一些正则表达式,您可以创建包含实际文本值的子节点.例如,在您的情况下,您可以将XML更改为:
<customer editable="true" maxChars="9" valueType="numeric"><value>69236<value></customer>

假设您的XML字符串在$str中的一些示例代码:

$str = preg_replace('/<customer ([^>]*)>([^<>]*)</customer>/i','<customer $1><value>$2</value></customer>',$str);
$xml = @simplexml_load_string($str);

这将保留属性并将文本值嵌套在子节点中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读