我需要排序的xml属性之一,但我不知道如何。我尝试了函数sort
,但它说它必须是字符串。我需要对tariffSpaceName进行排序,因为一个名称可以有多个数字,我希望将它们放在一起。我只显示一个订阅者,因为它的xml文件真的很大。
<?php
if (file_exists('2023-04-23-3622216414-5_13324_10_00_100005-s.xml')) {
$xml = simplexml_load_file('2023-04-23-3622216414-5_13324_10_00_100005-s.xml');
?>
<html>
<table>
<tr>
<th>tariffSpaceName</th>
<th>serviceNumber</th>
<th>coreProductNumber</th>
</tr>
<?php
$count = count($xml->subscribers->subscriber);
for($aa=0; $aa<$count; $aa++) {
foreach($xml->subscribers->subscriber[$aa]->attributes() as $key => $val) {
if($key == "tariffSpaceName"){
sort($key);
echo "<tr><td>[1]" . $val . "</td>";
}
if($key == "serviceNumber"){
echo "<td>[2]" . $val . "</td>";
}
if($key == "summaryPriceWithTax"){
echo "<td>[3]" . $val . "</td></tr>";
}
}
}
echo "------<br>";
}else {
exit('Failed to open test.xml.');
}
?>
</table>
</html>
<subscribers>
<subscriber accountType="CUST" ownerRefNum="3622216414" ownerCustCode="" phoneNumber="601177068" customerAccountNumber="3622216414" tariffSpaceNumber="5900349478" tariffSpaceName="Böhmová Zdeňka" coreProductNumber="601177068" serviceNumber="601177068" parentServiceNumber="3622216414" serviceStatus="A" summaryPrice="8" summaryPriceTax="1.68" summaryPriceWithTax="9.68" mainTariff="Profil 2" serviceCategory="mobileVoice" noOfEdr="26">
1条答案
按热度按时间mf98qq941#
使用SimpleXML解析XML将返回文档元素。在您提供的示例中,这将是
subscribers
元素。您可以使用
iterator_to_array()
(忽略键)将Traversable
转换为数组,然后使用数组函数对数据进行排序/Map。SimpleXML允许使用数组语法按名称寻址属性。这里没有必要重复它们。
输出: