【发布时间】:2020-08-28 02:35:59
【问题描述】:
我有一些有多个子级的 xml。他们的名字是已知的,数量和顺序是未知的。 在这种情况下,它们可以是 FreeRide 或 SteadyState。
我需要保留它们的顺序,然后提取 Duration 和 Power 的属性。
<?php
$xml='<workout_file>
<workout>
<FreeRide Duration="300" Power="1.3"/>
<SteadyState Duration="300" Power="0.55"/>
<FreeRide Duration="10" Power="1.2"/>
<SteadyState Duration="180" Power="0.55"/>
<FreeRide Duration="10" Power="1.1"/>
<SteadyState Duration="120" Power="0.55"/>
</workout>
</workout_file>';
$xml=simplexml_load_string($xml);
$count = 0;
foreach($xml->workout->children() as $node ){
$type = $node->getName();
echo $type." position: ".$count."<br>";
$count++;
//Get Attributes
//$attr = $xml->workout->$$type[$count]->attributes(); //Doesn't work Undefined variable: FreeRide
//echo "Duration: ".$attr['Duration']."<br>";
//echo "Power: ".$attr['Power']."<br>";
}
我可以使用此代码列出孩子以及他们的位置。 但是我不确定如何获取属性,因为不知道确切的子名称(它们可以按任何顺序排列)。
注意:这仅列出了 FreeRide 儿童: $attr = $xml->workout->FreeRide[$count]->attributes();
如何按正确的顺序获取子项、持续时间和功率的列表?
【问题讨论】:
-
感谢 Rob Ruchte,解决方案对我有用
-
感谢 IMSoP,这似乎也运行良好,代码行数更少。也很高兴了解 DOM 方法,可能会派上用场。
标签: php attributes simplexml children