Simple PHP code to sort file items.xml by id/fromid attribute
<?php
$path_to_file = 'data/items/items.xml';
$xml = simplexml_load_string(file_get_contents($path_to_file));
$trees = $xml->xpath('/items/item');
function sort_trees($t1, $t2)
{
$a = isset($t1['id']) ? $t1['id'] : $t1['fromid'];
$b = isset($t2['id']) ? $t2['id'] : $t2['fromid'];
return $a - $b;
}
usort($trees, 'sort_trees');
foreach ($trees as $tree) {
echo '<item ';
foreach ($tree->attributes() as $k => $v) {
echo $k . '="' . $v . '" ';
}
if (count($tree->attribute) > 0) {
echo '>' . PHP_EOL;
foreach ($tree->attribute as $k => $v) {
echo '<attribute key="' . $v->attributes()['key'] . '" value="' . htmlspecialchars($v->attributes()['value'], ENT_XML1 | ENT_QUOTES, 'UTF-8') . '" />' . PHP_EOL;
}
echo '</item>' . PHP_EOL;
} else {
echo '/>' . PHP_EOL;
}
}