我试图遍历并显示以下xml结构中的信息。
<users_list>
−<users type="array">
+<user>
<id>Blah</id>
</user>
+<user></user>
+<user></user>
</users>
<next_link>6</next_link>
<prev_link>4</prev_link>
</users_list>
我使用以下PHP来抓取节点。
$xml = simplexml_load_string($rawxml);
foreach($xml->users_list AS $key){
$name = $key->users->user->{"id"};
}
$next = $key->{"next_link"};
$prev = $key->{"prev_link"};
我尝试了几种变化,但我没有看到任何效果。当我在我的foreach
函数
答案 0 :(得分:2)
使用PHP进行疑难解答时,var_dump
和print_r
是您的朋友!
如果您希望像数组一样浏览结果,请将其转换为数组。
$value = (array) $value;
我做了以下事情:
$xmlStr = '<users_list>
<users type="array">
<user>
<id>Blah</id>
</user>
<user></user>
<user></user>
</users>
<next_link>6</next_link>
<prev_link>4</prev_link>
</users_list>';
$xml = simplexml_load_string($xmlStr);
foreach($xml->users->user AS $key=>$value){
$value = (array) $value;
$name = $value["id"];
var_dump($name);
}
给出输出:
string(4) "Blah"
NULL
NULL
查看PHP帮助文档以获取有关simplexml
的更多信息答案 1 :(得分:2)
使用SimpleXML时,应始终在变量包含的根节点之后命名,这会使事情更简单明了:
$users_list = simplexml_load_string(
'<users_list>
<users type="array">
<user>
<id>Blah</id>
</user>
<user></user>
<user></user>
</users>
<next_link>6</next_link>
<prev_link>4</prev_link>
</users_list>'
);
foreach ($users_list->users->user as $user)
{
echo "User ", $user->id, "\n";
}
echo "next: ", $users_list->next_link, "\n";
echo "prev: ", $users_list->prev_link, "\n";
答案 2 :(得分:0)
print_r($xml)
应该为您提供所需的所有信息。
你可能会发现实际的数组是$ xml-&gt; user_list-&gt; users-&gt; user,
铸造也有助于节省时间
foreach($xml->user_list->users->user as $value) {
$name = (string) $value->id;
}