3

给定这个对象:

stdClass Object (
    [customerdata] => <TPSession userid="22" CustomerId="123456"LoginId="123456"/><TPSession userid="26" CustomerId="1234567"LoginId="1234567" />
)

如何使用 PHP 将此 XML 数据转换为数组?

4

3 回答 3

10

只需将其转换为数组:

$arr = (array) $obj;
于 2012-05-07T08:26:14.113 回答
1

问题中的 XML 数据无效。

  1. 它没有根元素
  2. CustomerId="1234567"LoginId="1234567" 打破 xml 解析

您需要将其包装到根元素中,解决属性问题,而不是使用简单的 xml 解析器来生成可以转换为数组的对象。

例子

$o = new stdClass ();
$o->customerdata = '<TPSession userid="22" CustomerId="123456"LoginId="123456" /><TPSession userid="26" CustomerId="1234567"LoginId="1234567" />';
function wrap($xml) {
    return sprintf ( '<x>%s</x>', $xml );
}
function fix($xml) {
    return str_ireplace ( '"LoginId', "\" LoginId", $xml );
}

$xml = wrap ( fix ( $o->customerdata ) );
$sx = new SimpleXMLElement ( $xml );
$sx = ( array ) $sx;
$sx = $sx ['TPSession'];
foreach ( $sx as $row ) {
    var_dump ( ( array ) $row );
}
于 2013-06-26T16:49:15.273 回答
0

如果我了解您想要将包含在对象元素中的字符串转换为数组,换句话说,将 xml 字符串转换为数组。

这就是你要找的...

http://php.net/manual/en/function.simplexml-load-string.php

按照此页面上的示例进行操作。

于 2013-07-19T09:23:16.177 回答