Сортировка XML-документа после simplexml_load_file - PullRequest
0 голосов
/ 20 марта 2012

Я строю PHP-сайт на основе XML-документов.Я знаю предостережения о безопасности.Одна проблема, которую я не предвидел, заключалась в том, что при загрузке XML-файла результат не является обычным массивом, поэтому обычная сортировка, ограничение или рандомизация не работают.

Решение, которое я нашел в stackoverflow, заключается в том, чтоЯ должен загрузить файл, удалить все элементы и перестроить результат, поэтому я сделал это:

if ( is_file( $file ) ) {

//Load the XML file
$loaded = simplexml_load_file( $file );

//We will be sorting the list based on lname
$names = array();
foreach ($loaded->xpath('//account/lname') as $name) {
$names[] .= $name;
}
sort($names);

//Rebuild the XML-list by lname
$list = array();
foreach ($names as $item) {
$list .= $loaded->xpath("//account[lname=\"{$item}\"]");
}

//Return the list
return (object)$list;
}

Проблема в том, что результат теперь не работает с xpath (ОШИБКА: 'вызов неопределенного метода stdClass:: XPath () ').Можно ли это как-то исправить или я должен обработать результат как массив с этого момента?

...