我有以下XML:
<channels>
<channel>
<name>Channel 1</name>
<tid>15179</tid>
</channel>
<channel>
<name>Channel 2</name>
<tid>15177</tid>
</channel>
<channel>
<name>Channel 3</name>
<tid>15176</tid>
</channel>
<channel>
<name>Channel 4</name>
<tid>15407</tid>
</channel>
<channel>
<name>Channel 5</name>
<tid>15175</tid>
</channel>
<channel>
<name>Channel 6</name>
<tid>15178</tid>
</channel>
</channels>
并使用SimpleXMLElement,我得到了这个对象:
SimpleXMLElement Object
(
[channel] => Array
(
[0] => SimpleXMLElement Object
(
[name] => Channel 1
[tid] => 15179
)
[1] => SimpleXMLElement Object
(
[name] => Channel 2
[tid] => 15177
)
[2] => SimpleXMLElement Object
(
[name] => Channel 3
[tid] => 15176
)
[3] => SimpleXMLElement Object
(
[name] => Channel 4
[tid] => 15407
)
[4] => SimpleXMLElement Object
(
[name] => Channel 5
[tid] => 15175
)
[5] => SimpleXMLElement Object
(
[name] => Channel 6
[tid] => 15178
)
)
)
我试图简单地迭代这个对象以将通道放入一个数组中,但无论我如何尝试迭代,我得到的只是SimpleXMLElement对象,显然它不允许将它们用作数组键。例如,这个代码
$channel_data = new SimpleXMLElement($channel_xml->data);
foreach ($channel_data->children() as $nb_channel) {
$channel_name = $nb_channel->name;
$channel_tid = $nb_channel->tid;
$target_channels[$channel_tid[0]] = $channel_name[0];
}
$ channel_name和$ channel_tid也作为SimpleXMLElements出现。如果我试试
foreach ($channel_data->channel as $nb_channel) {
$channel_name = $nb_channel->name;
$channel_tid = $nb_channel->tid;
$target_channels[$channel_tid] = $channel_name;
}
$ channel-&gt; name和$ channel-&gt; tid也是simpleXMLElement对象。
SimpleXMLElement Object
(
[name] => Channel 1
[tid] => 15179
)
但是试图以
的形式访问它们 $nb_channel->name;
给我另一个对象:
SimpleXMLElement Object
(
[0] => Channel 1
)
迭代XML以获取数据并将其放入数组的正确方法是什么?
感谢。
答案 0 :(得分:1)
和往常一样,“发布一个问题,然后找出答案”的原则是有效的。
诀窍是使用__toString()将值转换为字符串:
$channel_data = new SimpleXMLElement($channel_xml->data);
foreach ($channel_data->channel as $nb_channel) {
$channel_name = $nb_channel->name->__toString();
$channel_tid = $nb_channel->tid->__toString();
$target_channels[$channel_tid] = $channel_name;
}
一旦我这样做,我的变量就有了正确的数据,并且我能够填充$ target_channels数组。