php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 1,00 durchschnittlich.
Alt 21.06.2009, 21:45  
Benutzer
 
Registriert seit: 21.06.2009
Beiträge: 87
PHP-Kenntnisse:
Anfänger
9999 befindet sich auf einem aufstrebenden Ast
Standard XML Inhalt sortiert ausgeben

Hallo,

ich würde gerne den Inhalt meiner data.xml sortiert ausgeben.
Die Datei sieht so aus:

Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>

<ROOT>
 <NAV>
  <LINK>seite01.php</LINK>
  <NAME>Seite 1</NAME>
  <ID>1</ID>
 </NAV>
 <NAV>
  <LINK>seite02.php</LINK>
  <NAME>Seite 2</NAME>
  <ID>3</ID>
 </NAV>
 <NAV>
  <LINK>seite03.php</LINK>
  <NAME>Seite 3</NAME>
  <ID>2</ID>
 </NAV>
</ROOT>
Wie kann ich jetzt die XML so sortieren, dass die Punkte in der ID-Reihenfolge ausgegeben werden? (Also 1 - 2 - 3, und nicht 1 - 3 - 2)
Auslesen ist kein Problem (Beispiel)
9999 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.06.2009, 21:48  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Auslesen ist kein Problem
Mit den gegebenen Beispiel aber total unsinnig. Dazu wurde DOM erfunden.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 21.06.2009, 22:03  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.733
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Wenn du die aus dem XML eingelesenen Daten erst in einem Array speicherst, kannst du sie darin vor der Ausgabe mit Funktionen wie usort sortieren.
mermshaus ist gerade online  
Alt 21.06.2009, 22:24  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.709
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Aber dazu wurde DOM erfunden.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline  
Alt 21.06.2009, 22:33  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.733
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Meinst du XSL oder geht's noch anders?
mermshaus ist gerade online  
Alt 21.06.2009, 22:41  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.709
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Wenn ich DOM sage und nicht gerade von schwarze-roten Regierungen gefoltert werde, dann meine ich auch DOM.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline  
Alt 21.06.2009, 23:14  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.733
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Okay, und wie?

Edit: *seufz* Vergiss das Beispiel. (Hatte es nicht geschafft, usort() auf irgendwas vom Typ DOMNode anzuwenden und dachte dann, ich müsste anfangen, 'nen eigenen Algorithmus zu implementieren. Dazu habe ich dann die zu sortierenden Nodes in ein Array gepackt...)

Code:
$xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<a id="0"></a>
<a id="7"></a>
<a id="5"></a>
<a id="1"></a>
<a id="6"></a>
<a id="4"></a>
<a id="2"></a>
<a id="9"></a>
</root>';

$parser = new DOMDocument();
$parser->loadXML($xml);

$root = $parser->childNodes->item(0);
$nodes = array();

for ($i = 0; $i < $root->childNodes->length; $i++)
{
    $child = $root->childNodes->item($i);
    if ($child->nodeName == 'a')
    {
        $nodes[] = $child;
    }
}

for ($i = count($nodes) - 1; $i >= 1; $i--)
{
    for ($j = 1; $j < $i; $j++)
    {
        if ($nodes[$j]->attributes->getNamedItem('id')->nodeValue >
                $nodes[$j + 1]->attributes->getNamedItem('id')->nodeValue)
        {
            $temp = $nodes[$j];
            $nodes[$j] = $nodes[$j + 1];
            $nodes[$j + 1] = $temp;
        }
    }
}

foreach ($nodes as $node)
{
    echo $node->attributes->getNamedItem('id')->nodeValue;
}

Geändert von mermshaus (21.06.2009 um 23:23 Uhr).
mermshaus ist gerade online  
Alt 22.06.2009, 20:16  
Benutzer
 
Registriert seit: 21.06.2009
Beiträge: 87
PHP-Kenntnisse:
Anfänger
9999 befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank für eure schnelle Hilfe.
@mermshaus: Vielen Dank für den Quelltext, nur wie kann ich z.B.
Code:
<a id="0">Link 1</a>
hier "Link 1" anzeigen lassen?
Ich hab das leider nicht hinbekommen.
9999 ist offline  
Alt 23.06.2009, 01:02  
Erfahrener Benutzer
 
Benutzerbild von leonv
 
Registriert seit: 12.01.2009
Beiträge: 344
PHP-Kenntnisse:
Fortgeschritten
leonv befindet sich auf einem aufstrebenden Ast
Standard

Tach,

am saubersten macht man sowas mit einem XSLT Prozessor, der genau dafür erfunden wurde, um XML zu bearbeiten.

Du benötigst dafür noch nicht einmal einen PHP Server, sondern nur einen aktuellen Browser, der schon einen XSLT Prozessor mit bringt.

Hier mal ein Beispiel:
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE gruss SYSTEM "gruss.dtd">
<?xml-stylesheet type="text/xsl" href="sortSheet.xsl" ?>
<data>
	<value>2</value>
	<value>4</value>
	<value>1</value>
	<value>3</value>
	<value>5</value>
</data>
Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
 <data>
  <xsl:for-each select="data/value">
  	<xsl:sort select="."/>
  	<value><xsl:value-of select="."/></value>
  </xsl:for-each>
 </data>
</xsl:template>

</xsl:stylesheet>
http://www.w3schools.com/XSL/xsl_sort.asp
http://www.w3.org/TR/xslt#sorting
__________________
Kreativität und Schöpfung durch Chaos und Ordnung.
leonv ist offline  
Alt 23.06.2009, 03:06  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.733
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Zitat:
Zitat von 9999 Beitrag anzeigen
Vielen Dank für eure schnelle Hilfe.
@mermshaus: Vielen Dank für den Quelltext, nur wie kann ich z.B.
Code:
<a id="0">Link 1</a>
hier "Link 1" anzeigen lassen?
Ich hab das leider nicht hinbekommen.
PHP-Code:
$xml '<' '?xml version="1.0" encoding="UTF-8" standalone="yes"?' '>
<root>
<a id="0">null</a>
<a id="7">sieben</a>
<a id="5">fünf</a>
<a id="1">eins</a>
<a id="6">sechs</a>
<a id="4">vier</a>
<a id="2">zwei</a>
<a id="9">neun</a>
</root>'
;

$parser = new DOMDocument();
$parser->loadXML($xml);

$root $parser->childNodes->item(0);
$nodes = array();

for (
$i 0$i $root->childNodes->length$i++)
{
    
$child $root->childNodes->item($i);
    if (
$child->nodeName == 'a')
    {
        
$nodes[] = $child;
    }
}

usort($nodescreate_function('$a, $b',
        
'return ($a->attributes->getNamedItem(\'id\')->nodeValue >
        $b->attributes->getNamedItem(\'id\')->nodeValue) ? 1 : -1;'
));

foreach (
$nodes as $node)
{
    echo 
$node->nodeValue;

mermshaus ist gerade online  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Text zufällig und sortiert in Tabelle ausgeben trettin Scriptbörse 5 07.06.2009 18:57
[Erledigt] Inhalt mehrdimesionales array nach Sortierung ausgeben supervision PHP Tipps 2009 7 26.05.2009 21:08
Datumsformat "Monat Jahr" eingeben und sortiert ausgeben. dahead PHP Tipps 2009 15 01.04.2009 10:34
Hilfe, Seite im Internet Explorer Buggy trowman HTML, Usability und Barrierefreiheit 4 15.09.2008 08:32
Bild verschafft sich platz HTML, Usability und Barrierefreiheit 14 11.08.2008 23:45
(MySQL) Ergebnisse Zählen und sortiert ausgeben... Hawk Datenbanken 5 04.03.2007 17:08
Einträge nach Anzahl sortiert ausgeben Riot Datenbanken 6 19.09.2005 19:13
gleicher inhalt, aber nur 1x ausgeben möchtegernchegga PHP Tipps 2005-2 7 30.07.2005 20:31
Sortiert nach Differenz 2er Datensätze ausgeben Datenbanken 2 24.07.2005 12:36
Mysql: Daten nach Anfangsbuchstaben Sortiert Ausgeben PHP Tipps 2005-2 5 09.07.2005 15:56
[Erledigt] Datenbank sortiert ausgeben! Datenbanken 4 23.03.2005 12:49
Verzeichnis -> read() sortiert ausgeben Unbekanntes_Pferd PHP Tipps 2005 9 30.01.2005 20:39
Inhalt einer TXT-Datei in PHP ausgeben maximus PHP Tipps 2004-2 10 08.12.2004 23:34
Datenbankeinträge sortiert ausgeben lassen PHP Tipps 2004 3 22.10.2004 22:10
[Erledigt] Wie kann man bei echo inhalt in anführungszeichen ausgeben PHP Tipps 2004 5 30.06.2004 03:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php xml sortieren ausgeben, http://www.php.de/php-einsteiger/56301-xml-inhalt-sortiert-ausgeben.html, php xml sortieren, xml sortieren, xml inhalt sortieren, xml php sortieren, xml auslesen und mit php sortieren, read() sortieren, php sort xml, php xml nodes sortieren, xpath reihenfolge, xml inhalt ausgeben php, xml inhalt ausgeben, textinhalte auslesen und in php tabelle sortieren, xsl sortierte liste mit link zu anfangsbuchstaben, php dom nodes als array ausgeben, xml per php reihenfolge ändern, reihenfolge änder domdocument php, php xml inhalt eines nodes aus dem array ausgeben, inhalte mit xml tabelle sortieren

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:15 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum