PHP: Wie man XML-alphabetisch nach dem Attribut vor die "for each" - Schleife

Das setup:

Ich habe eine externe XML-Datei, die ich haben keine Kontrolle über, hier ist es:

001.xml

<?xml version="1.0" encoding="utf-8"?>
<Gallery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ID="001" Name="001">
<Images>
<ImageGalleryEntry Name="1 John" Description="Doe" FileName="830358.1john.png" Width="100" Height="100">
<S3Key>accounts/b2d174c1-a408-4d58-9d48-1490ac4e9f9b/site-37857/cms-assets/images/830358.logooraclehealthsciencesthumb.png</S3Key>
<S3ThumbnailKey>accounts/b2d174c1-a408-4d58-9d48-1490ac4e9f9b/site-37857/cms-assets/thumbnails/830358.logooraclehealthsciencesthumb.png</S3ThumbnailKey>
<ContentLength>1309</ContentLength>
</ImageGalleryEntry>
<ImageGalleryEntry Name="11 Jane" Description="Doet" FileName="943702.11jane.png" Width="100" Height="100">
<S3Key>accounts/b2d174c1-a408-4d58-9d48-1490ac4e9f9b/site-37857/cms-assets/images/943702.logorochethumb.png</S3Key>
<S3ThumbnailKey>accounts/b2d174c1-a408-4d58-9d48-1490ac4e9f9b/site-37857/cms-assets/thumbnails/943702.logorochethumb.png</S3ThumbnailKey>
<ContentLength>1403</ContentLength>
</ImageGalleryEntry>
<ImageGalleryEntry Name="10 Jack" Description="Smith" FileName="965501.10jack.png" Width="100" Height="100">
<S3Key>accounts/b2d174c1-a408-4d58-9d48-1490ac4e9f9b/site-37857/cms-assets/images/965501.pwclogo.png</S3Key>
<S3ThumbnailKey>accounts/b2d174c1-a408-4d58-9d48-1490ac4e9f9b/site-37857/cms-assets/thumbnails/965501.pwclogo.png</S3ThumbnailKey>
<ContentLength>7021</ContentLength>
</ImageGalleryEntry>
</Images>
</Gallery>

Ich habe auch ein php-code, der nimmt diese Information und setzt es in html schön:

index.php fragment

<?php
$url = '001.XML';
$xml = simplexml_load_file($url);
foreach($xml->Images->ImageGalleryEntry as $item) {
    echo $item['FileName'] . "<br/>" . $item['Name'] . "<br/>" . $item['Description'] . "<br/><br/>";
};
?>

Die Ausgabe ist:

830358.1 john.png

1 John

Doe

943702.11 jane.png

11 Jane

Doet

965501.10 jack.png

10 Jack

Smith

Das problem ist, dass ich es wirklich benötigen, bestellt durch das Name-Attribut, wie hier:

830358.1 john.png

1 John

Doe

965501.10 jack.png

10 Jack

Smith

943702.11 jane.png

11 Jane

Doet

Beachten Sie, dass die XML ändert sich ständig, so das php automatisch die Reihenfolge alphabetisch nach Namen. Ich vermute ich muss irgendwie Sortieren alphabetisch alle ImageGalleryEntry tags durch Ihren Namen-Attribut vor Eintritt in die for-each-Schleife, aber keine Ahnung, wie das zu tun.

Bitte geben Sie eine eigentliche Weg, es zu tun, ich bin neu in php, und nicht wissen, was zu tun ist, wenn Sie etwas sagen wie "machen Sie ein array".

  • Vorsicht vor schreiben nie beantwortet, wenn Ihr müde, ich wollte schlafen dann erkannt, dass meine Antwort hatte wurde grundlegend fehlerhaft, so dass neu gestartet, meinen laptop zu kommen und es löschen. Sorry ich habe mir nicht die Tatsache, dass Sie wurden Objekte berücksichtigt, wenn was auf die Funktion Sortieren.
InformationsquelleAutor amesguich | 2012-03-01
Schreibe einen Kommentar