【问题标题】:Loop through children in xml with php使用 php 循环遍历 xml 中的子项
【发布时间】:2020-09-21 13:57:32
【问题描述】:

可能很容易,但它无法让它发挥作用。我有一个如下所示的 XML 文件:

<Competition>
  <gameSchedule>
    <game>
      <ID>58256</ID>
      <Nr>1N-001</Nr>
    </game>
    <game>
      <ID>58278</ID>
      <Nr>1N-001</Nr>
    </game>
    <game>
      <ID>58986</ID>
      <Nr>1N-001</Nr>
    </game>
  </gameSchedule>
</Competition>

我想遍历游戏节点,这样我就可以获得所有的 ID。但即使尝试获取第一个节点也不会返回任何内容。我以为

$xml = simplexml_load_string($kalender) or die("Error: Cannot create object");
$firstElementChild = $xml->children()[0];
echo($firstElementChild);

其中 $kalender = xml。我认为这会显示从 gameSchedule 开始的 XML,但它返回一个空字符串。我在这里做错了什么?

【问题讨论】:

标签: php xml simplexml


【解决方案1】:

$xml-&gt;children() 返回 Traversable SimpleXMLElement,而不是数组。

你可以试试这个方法:

$xml = simplexml_load_string($kalender) or die("Error: Cannot create object");

foreach ($xml->{'gameSchedule'}->{'game'} as $game) {
  print "ID = {$game->{'ID'}} Nr = {$game->{'Nr'}}\r\n";
}

【讨论】:

    【解决方案2】:

    由于您正在处理 xml,我认为处理它的最佳方法是 xpath:

    $ids = $xml->xpath('//game/ID');
    foreach($ids as $id)
       echo $id . '<br>';
    

    输出:

    58256
    58278
    58986
    

    【讨论】:

      猜你喜欢
      • 2021-11-12
      • 2011-10-13
      • 2011-05-07
      • 1970-01-01
      • 2019-07-07
      • 2013-11-30
      • 1970-01-01
      • 2014-08-02
      相关资源
      最近更新 更多