我有一个xml文件,我想将节点的rank属性存储在变量中。
我试过了:
echo $var = $xmlobj->xpath("//Listing[@rank]");
无济于事,只打印 ArrayArray 。
如何做到这一点?
if($xmlobj = simplexml_load_string(file_get_contents($xml_feed)))
{
foreach($xmlobj as $listing)
{
// echo 'Session ID: ' . $sessionId = $listing->sessionId . '<br />';
// echo 'Result Set: ' . $ResultSet = $listing->ResultSet . '<br />';
print_r($xmlobj->xpath("//Listing[@rank]"));
// $result = $xmlobj->xpath("/page/");
// print_r($result);
}
}
亨里克的建议:
foreach($xmlobj as $listing)
{
$var = $xmlobj->xpath("//Listing[@rank]");
foreach ($var as $xmlElement)
{
echo (string)$xmlElement;
}
}
你去吧
<page>
<ResultSet id="adListings" numResults="3">
<Listing rank="1" title="Reliable Local Moving Company" description="TEST." siteHost="www.example.com">
</Listing>
答案 0 :(得分:2)
使用发布的示例xml:
进行编辑"//Listing[@rank]"
选择拥有'rank'属性的所有“列表”元素。如果您想自己选择属性,请使用"//Listing/@rank"
$xmlElement['rank']
所以在你的情况下:
foreach($xmlobj as $listing)
{
$var = $xmlobj->xpath("//Listing/@rank");
foreach ($var as $xmlElement)
{
echo $xmlElement['rank'];
}
}
或
foreach($xmlobj as $listing)
{
$var = $xmlobj->xpath("//Listing[@rank]");
foreach ($var as $xmlElement)
{
echo $xmlElement['rank'];
echo $xmlElement['title']; // Added to demonstrate difference
}
}
应该有用。
在第一种情况下,$ xmlElement只包含'rank'属性,而在第二种情况下,它将包含完整的'Listing'元素(因此允许标题输出)。