SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 03.05.2010, 12:13:21
moodsx moodsx ist offline
Anfänger
 
Registriert seit: Dec 2008
Alter: 43
Beiträge: 7
xml elemente verschieben

Hallo Community,

ich beschäftige mich derzeit mit php5 und xml, genauer gesagt simplexml.

Soweit habe ich die Sache auch am Start und scheine jetzt an die Grenzen von simplexml zu kommen deshalb hier meine Frage. Folgendes xml Beispiel will ich bearbeiten:

Code:
<channel>
<a name="a">
<a1 name="a1">InhaltA1</a1>
<a2 name="a2">InhaltA2</a2>
<a3 name="a3">InhaltA3</a3>
</a>
<b name="b">Inhalt B</b>
</channel>
Hier möchte ich jetzt folgendes durchführen:
"a3" soll verschoben werden vor "a1", es sollte aber so sein das wenn Kinder in "a3" vorhanden sind diese auch mit übernommen werden. Die Attribute sollten ebenfalls erhalten bleiben. Lässt sich das ganze irgendwie mit simplexml erschlagen oder muss ich mich doch wirklich mit DOM beschäftigen? Leider ist DOM für mein Gehirn nicht wirklich geeignet, wäre gut wenn man das auch anders, leichter erschlagen könnte.

Danke für Eure Hilfe.
Mit Zitat antworten
  #2  
Alt 04.05.2010, 15:34:49
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: xml elemente verschieben

Wenn du hier keine umgekehrte Sortierung haben willst macht es eigentlich keinen Sinn oder besser sehe ich keinen Sinn den Knoten an eine andere Stelle zu setzen.
Oder möchtest/musst du die Ausgabe der Daten per Styles erledigen?

Lt. deinem Beispiel ist innerhalb von "a" nur "a1" "a2" und "a3" als Knoten bzw. Element erlaubt. Da sie direkt angesprochen werden können ist ihre Position eigentlich vollkommen irrelevant sofern man die Ausgabe nicht über Styles machen möchte/muss.

Dein Vorhaben ist mit Funktionen von simpleXML und, wenn ich nichts übersehen habe, auch mit DOM so nicht machbar.

Eine Möglichkeit wäre die Knoten deiner XML Datei in eine neue tempoäre XML Datei oder neu in die vorhandene Datei so zu schreiben, wie du sie gern haben möchtest.
Mit Zitat antworten
  #3  
Alt 04.05.2010, 15:50:48
moodsx moodsx ist offline
Anfänger
 
Registriert seit: Dec 2008
Alter: 43
Beiträge: 7
AW: xml elemente verschieben

Es kann natürlich gut sein das ich zu kompliziert denke bzw. xml für mein Vorhaben nicht wirklich geeignet ist. Ich will versuchen das kurz darzulegen:

Ich arbeite meine Webseite um will keine Datenbank im herkommlichen Sinne benutzen, warum das lassen wir mal aussen vor. Deswegen kam mir der Gedanke nimm doch einfach xml, für sowas ist es doch geschaffen worden, oder? Soweit so gut, das bedeutet das die Navigation + Inhalte allein aus dieser xml stammen. In unserem Beispiel wäre "a" die Überschift bzw. Kategorie und "a1, a2..." der Content. Jetzt will man natürlich die Links bzw. Kategorien speziell wenn was neues hinzukommt nicht am Ende haben sondern das ganze sortieren, genau dafür müsste auch die xml Datei umsortiert werden.

Mein Gedanke war jetzt eventuell den Knoten zu lösen und per "DOMDomument::importNode" an die gewünschte Stelle zu importieren, aber im Moment scheitere ich daran.
Mit Zitat antworten
  #4  
Alt 04.05.2010, 16:35:35
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: xml elemente verschieben

Vorab erst einmal: XML dient für den Datentransport zwischen Anwendungen. Sicherlich kann man es auch als DB Erstaz nutzen.

Da ich nun weiß wo das Problem liegt kannst du sowas per DOM umsetzen.
Zum Einfügen würde sich da DOMNode::insertBefore anbieten. Zuvor müsstest du natürlich die Stelle ermitteln an der der neue Knoten erstellt werden muß.

Ich bin mir allerdings nicht sicher ob deine XML Struktur hier richtig gewählt ist, wenn du damit ganze Wegseiten erstellen willst. Insbesondere der Einsatz von Attributen scheint mir nicht klar und sinnvoll zu erscheinen. Kann aber auch sein, daß es nur an dem vereinfachten Beispiel liegt.

Neuer Content könnte ruhig am Ende stehen. Hier könnte man die Knoten in umgekehrter Reihenfolge ausgeben lassen.
Bei einem neuen Menüeintrag sollte diese schon an der korrekten Stelle stehen, wenn das Menü nicht sinnvoll sortiert werden kann. Nach dem Alphabet sortieren z. B.

Zitat:
Mein Gedanke war jetzt eventuell den Knoten zu lösen und per "DOMDomument::importNode" an die gewünschte Stelle zu importieren, aber im Moment scheitere ich daran.
Wo liegt das Problem? Gibt es Fehler? Wie sieht dein Versuch aus?
Mit Zitat antworten
  #5  
Alt 04.05.2010, 23:00:13
moodsx moodsx ist offline
Anfänger
 
Registriert seit: Dec 2008
Alter: 43
Beiträge: 7
AW: xml elemente verschieben

Also was die Attribute betrifft so muss ich Dir sagen das sich das für mich als notwendig erachte und die bereits auch nutze wie z.B.

Code:
<Impressum name="Impressum" link="/Infos/Impressum" status="content" visible="yes">...</Impressum>
Ich muss ja wiessen was das System da an der Stelle ausgeben soll, content oder einfach eine category, soll es sichtbar sein und so weiter.
Ich werte die Attribute bereits aus und das funktioniert einwandfrei.

Was nun meinen Versuch betrifft so sei nachsichtig mit mir, ich fang eben erst an mit DOM:

xm (test.xml):

Code:
<?xml version="1.0" encoding="utf-8"?>
<root name="root">Der Anfang
<channel name="channel">Der Channel
<Inhalt1 name="Inhalt1">Der 1.Inhalt</Inhalt1>
</channel>
</root>
php:

Code:
$newdoc = new DOMDocument;
$newdoc->loadXML('<Test name="Test">Der Test
<Test2 name="Test2">Der 2. Test</Test2></Test>');

$doc = new DOMDocument();
$doc->load('test.xml');
$element = $doc->getElementsByTagName('Inhalt1')->item(0);
$node = $element->importNode($newdoc, True);
$doc->save('test.xml');
Das schlägt natürlich fehl mit dem folgenden Fehler:

Fatal error: Call to undefined method DOMElement::importNode()

was ich bis jetzt leider noch nicht begriffen hab. Eventuell kannst Dur mir da einen Tip geben, wäre nett.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Spalten in Tabelle mit Inhalt verschieben sql-newbie MySQLi/PDO/(MySQL) 2 02.03.2008 22:50:19
eml elemente in DB übertragen Redmen PHP für Fortgeschrittene und Experten 1 28.09.2006 20:55:59
Lösche bestimmte Elemente aus array lutze PHP Grundlagen 4 22.12.2005 17:47:41
Bild von einen Ordner in den anderen verschieben Atolos PHP Grundlagen 2 23.07.2005 18:04:38
Array-Schlüssel nach Löschung einzelner Elemente Aichbus PHP für Fortgeschrittene und Experten 2 09.06.2003 15:53:51


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


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt