解析xml以获取一些值

时间:2011-03-13 16:01:03

标签: php xml simplexml

http://www.managerleague.com/export_data.pl?data=transfers&output=xml&hide_header=0

这些是来自浏览器游戏的玩家销售。我想从这些销售中保存一些字段。我正在使用curl获取该xml并存储在我的服务器上。然后执行以下操作:

$xml_str = file_get_contents('salespage.xml');
$xml = new SimpleXMLElement($xml_str);
$items = $xml->xpath('*/transfer');

print_r($items);

foreach($items as $item) {
    echo $item['buyerTeamname'], ': ', $item['sellerTeamname'], "\n";
}

数组是空的,我似乎无法从中得到任何东西。我做错了什么?

3 个答案:

答案 0 :(得分:2)

没有理由为此使用cURL或XPath。你可以做到

$url = 'http://www.managerleague.com/export_data.pl?data=transfers&output=xml&hide_header=0';
$transfers = new SimpleXMLElement($url, NULL, TRUE);
foreach($transfers->transfer as $transfer) {
    printf(
        "%s transfered from %s to %s\n",
        $transfer->playerName,
        $transfer->sellerTeamname,
        $transfer->buyerTeamname
    );
}

Live Demo

答案 1 :(得分:0)

<?php
$xml = simplexml_load_file("test.xml");

echo $xml->getName() . "<br />";

foreach($xml->children() as $child)
  {
  echo $child->getName() . ": " . $child . "<br />";
  }
?>

这是你想要的吗?

答案 2 :(得分:0)

你忘记了xpath中的斜杠:

$xml_str = file_get_contents('salespage.xml');
$xml = new SimpleXMLElement($xml_str);
$items = $xml->xpath('/*/transfer');

print_r($items);

foreach($items as $item) {
    echo $item->buyerTeamname, ': ', $item->sellerTeamname, "\n";
}