Einzelnen Beitrag anzeigen
  #1  
Alt 18.10.2010, 08:20:36
mr_sol mr_sol ist offline
Anfänger
 
Registriert seit: Oct 2010
Alter: 58
Beiträge: 19
NESTED SETS in XML - Gruppierung von Elementen

Hallo Thomas!


Auf Basis unterer Baumstruktur und der Basisquery http://www.selfphp.de/forum/showthread.php?t=23668 suche ich eine Möglichkeit der XML Ausgabe bei gruppierten Elementen. Der Vorteil liegt im einfacheren Einfügen von Elementen bei grossen Bäumen.

Code:
vcard
            n
			           given
					   familie
					   additional
             geo
			          latitude
					  longitude
			 adr
			           street
					   city
					   country
					   zip

Code:
<vcard>
<n>
    <given>Max</given>
	<familie>Mustermann</familie>
	<additional>Dr</additional>
</n>
<geo>
     <latitude>48°12'N</latitude>
	 <longitude>16°22'E</longitude>
</geo>
<adr>
	<street>Mustergasse 13</street>
	<city>Vienna</city>
	<country>Austria</country>
	<zip>1010</zip>
</adr>
</vcard>

Meine Überlegung. Da das Einfügen in einen Nested Set Baum recht aufwendig ist. (Alle lft,rgt des gesamte Baum
hinter den neuen Element müssen neu beschrieben werden). Gibt es zwei Möglichkeiten.



Lösungsansatz 1) Zusammenfassen von Elemente zu Gruppen

zB: Element geo besteht aus Unterelemente latitude,longitude wobei die Reihenfolge der der Unterelemente egal ist

Am Beispiel vcard würde die Grundstruktur so ausschauen

vcard[1,8]
n[2,3]
geo[4,5]
adr[6,7]


für alle Unterelemente von geo[4,5] gilt (man kann den beliebig viele Unterelemente einfügen mit geringstem Aufwand)
latitude[4,5]
longitude[4,5]


Ergebnis:
vcard[1,8]
n[2,3]
geo[4,5],latitude[4,5],longitude[4,5]
adr[6,7]


geo hat die Eigenschaft die niedrigste id in der Gruppe zu besitzen

Ansatz: Baum mit Elemente zusammenbauen (wie bisher), Unterelemente per group_concat zusammenbauen und nach <> anhängen






Lösungsansatz 2) Zweite Tabelle anlegen

Eine Tabelle für Grobstruktur, eine für Unterelemente




Im Sinne des Nested Set "alles aus eine Struktur" finde ich die erste Lösung besser. Was sagt Du?


grüsse helmut

(Content liefere ich jeweils nach)

Geändert von mr_sol (18.10.2010 um 08:39:52 Uhr)
Mit Zitat antworten