如何正确读取xml并摆脱SimpleXMLElement?

时间:2016-12-06 14:09:10

标签: php xml laravel

我可以在代码中读取xml输入,但输出具有SimpleXMLElement属性。当我使用echo时,结果有一个“SimpleXMLElement”。 如何从输出中删除这个术语?

  

SimpleXMLElement {#253▼     +0:“362932”   }

代码是

$xml=simplexml_load_file("$address&league=3");
// dd($xml);
$items = array();
foreach ($xml->Odds as $key => $value)
{
    $matchid= ($value->FixtureMatch_Id);
    echo "$matchid";

xml类似于http://www.xmlsoccer.com/FootballDataDemo.asmx/GetFixtureMatchByID?ApiKey=ZXRIQOWMCFARAWRQIMSLRXCTSZDOBNLOTYWXYXMZYGDSENFSRB&Id=362933

我想从输出中消除SimpleXMLElement。

1 个答案:

答案 0 :(得分:0)

您只需将其转换为字符串即可。 SimpleXMLElement实现了几个接口和魔术方法。例如Traversable允许foreach()__toString()进行字符串转换。

echo是一个隐式字符串强制转换,因此它只输出文本内容。

这是一个带有精简XML的小例子:

$xml = <<<'XML'
<?xml version="1.0" encoding="utf-8"?>
<XMLSOCCER.COM>
  <Match>
    <Id>362933</Id>
  </Match>
</XMLSOCCER.COM>
XML;

$soccer = new SimpleXMLElement($xml);
foreach ($soccer->Match as $match) {
    $matchId = $match->Id;
    var_dump($matchId);
    var_dump((string)$matchId);
    echo $matchId;
}

输出:

object(SimpleXMLElement)#5 (1) {
  [0]=>
  string(6) "362933"
}
string(6) "362933"
362933

如您所见,该属性为SimpleXMLElement(第一个var_dump())。但它可以强制转换为字符串(第二个var_dump()),而echo触发隐式转换。