I'm using PHP and I wrote an application that creates and fills a SimpleXMLObject with the results of a database query. The results are saved as tags.
Background information on the application:
The variables I get from that query are like this "a/b/c" and I use explode to split this variable and add each individual instance as an own XML-tag.
For example $parts = explode("/", $cropSpace);
So that means I never know beforehand how many variables are created with explode and what the names of those nodes are.
What I want to accomplish:
I want to transform this XML object with dynamically generated nodes and size into an HTML list (<ul><li>
)
What I tried:
I looked up many guides on how to accomplish such a thing but all of them are focused on a static XML object/file in which you already know the names of the nodes. Since I dont know the names of the nodes and the size of the object, I tried on my own this
foreach ($parts as $part) {
if (!is_numeric($part)) {
if (!isset($set->$part)) {
$set = $set->addChild($part);
echo "<ul><li>$part</li>";
$counter++;
} else {
$set = $set->$part;
}
for ($i = 0; $i < $counter - 1; $i++){
echo "</ul>";
}
}
I know why it isn't working (unlike in the creating the XML object it doesn't check if that list was already created) but i don't know how to do it.
Example Expected Output: For example I have these four variables
And I want this XML object to be displayed in a HTML list like this.
I know it is a lot to read but I would really appriciate the help. Thanks in advance.
EDIT
Here is an example of the original XML File but it is very big and changes for every user.
<?xml version="1.0"?>
<permissions>
<sogo>
<jost>
<Calendar>
<PersönlicherKalender>
<ConfidentialModifier/>
<ObjectCreator/>
<ObjectEraser/>
<PrivateModifier/>
<PublicModifier/>
</PersönlicherKalender>
<IfIKalenderBJ>
<ConfidentialModifier/>
<ObjectCreator/>
<ObjectEraser/>
<PrivateModifier/>
<PublicModifier/>
</IfIKalenderBJ>
</Calendar>
</jost>
<ificalendars>
<Calendar>
<Meetings>
<ObjectEraser/>
<ObjectCreator/>
<ObjectEraser/>
<ObjectCreator/>
<ObjectEraser/>
<ObjectCreator/>
<ObjectEraser/>
<ObjectCreator/>
<PublicModifier/>
<ConfidentialDAndTViewer/>
<PublicViewer/>
<PublicViewer/>
</Meetings>
<Events>
<ObjectCreator/>
<ObjectEraser/>
<PublicModifier/>
<ConfidentialDAndTViewer/>
<PublicViewer/>
<PublicViewer/>
</Events>
</Calendar>
</ificalendars>
<ifiabsences>
<Calendar>
<Barbara>
<PublicModifier/>
<ConfidentialModifier/>
<PrivateModifier/>
<ObjectCreator/>
<ObjectEraser/>
<PublicViewer/>
<PublicViewer/>
</Barbara>
<Nico......meetings>
<PublicViewer/>
</Nico......meetings>
<PublicViewer/>
<Erica......meetings>
<PublicViewer/>
</Erica......meetings>
<PublicViewer/>
<Tammy......meetings>
<PublicViewer/>
</Tammy......meetings>
<PublicViewer/>
<Daniela......meetings>
<PublicViewer/>
</Daniela......meetings>
<PublicViewer/>
<Marina......meetings>
<PublicViewer/>
</Marina......meetings>
<PublicViewer/>
<Mona......meetings>
<PublicViewer/>
</Mona......meetings>
<PublicViewer/>
<Enrico......meetings>
<PublicViewer/>
</Enrico......meetings>
<PublicViewer/>
<Claudia......meetings>
<PublicViewer/>
</Claudia......meetings>
<PublicViewer/>
<Beat......meetings>
<PublicViewer/>
</Beat......meetings>
<PublicViewer/>
<Nathan......meetings>
<PublicViewer/>
</Nathan......meetings>
<PublicViewer/>
<Hanspeter......meetings>
<PublicViewer/>
</Hanspeter......meetings>
<PublicViewer/>
<Elida......meetings>
<PublicViewer/>
</Elida......meetings>
<PublicViewer/>
<Kim......meetings>
<PublicViewer/>
</Kim......meetings>
<PublicViewer/>
</Calendar>
</ifiabsences>
<ifilehrbereich......lehrbereich>
<Calendar......lehrbereich>
<PlanungLehre......lehrbereich>
<PublicModifier/>
</PlanungLehre......lehrbereich>
</Calendar......lehrbereich>
</ifilehrbereich......lehrbereich>
<Calendar......lehrbereich>
<PlanungLehre......lehrbereich>
<PublicModifier/>
</PlanungLehre......lehrbereich>
</Calendar......lehrbereich>
<PlanungLehre......lehrbereich>
<PublicModifier/>
</PlanungLehre......lehrbereich>
<PlanungLehre......lehrbereich>
<PublicModifier/>
</PlanungLehre......lehrbereich>
<PlanungLehre......lehrbereich>
<PublicModifier/>
</PlanungLehre......lehrbereich>
<PlanungLehre......lehrbereich>
<PublicModifier/>
</PlanungLehre......lehrbereich>
<PlanungLehre......lehrbereich>
<PublicModifier/>
</PlanungLehre......lehrbereich>
<PlanungLehre......lehrbereich>
<PublicModifier/>
</PlanungLehre......lehrbereich>
<PlanungLehre......lehrbereich>
<PublicModifier/>
</PlanungLehre......lehrbereich>
<PlanungLehre......lehrbereich>
<PublicModifier/>
</PlanungLehre......lehrbereich>
<Lehrbereich......lehrbereich>
<PublicModifier/>
</Lehrbereich......lehrbereich>
<PublicModifier/>
<ifistundenplan......stundenplan>
<Calendar......stundenplan>
<Ass......stundenplan>
<PublicModifier/>
</Ass......stundenplan>
</Calendar......stundenplan>
</ifistundenplan......stundenplan>
<Calendar......stundenplan>
<Ass......stundenplan>
<PublicModifier/>
</Ass......stundenplan>
</Calendar......stundenplan>
<Ass......stundenplan>
<PublicModifier/>
</Ass......stundenplan>
<PublicModifier/>
<PublicModifier/>
<CL......stundenplan>
<PublicModifier/>
</CL......stundenplan>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<BSc......stundenplan>
<PublicModifier/>
</BSc......stundenplan>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<MSc......stundenplan>
<PublicModifier/>
</MSc......stundenplan>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<ifireservations......raumreservation>
<Calendar......raumreservation>
<BIN0.B.04......raumreservation>
<PublicModifier/>
</BIN0.B.04......raumreservation>
</Calendar......raumreservation>
</ifireservations......raumreservation>
<Calendar......raumreservation>
<BIN0.B.04......raumreservation>
<PublicModifier/>
</BIN0.B.04......raumreservation>
</Calendar......raumreservation>
<BIN0.B.04......raumreservation>
<PublicModifier/>
</BIN0.B.04......raumreservation>
<PublicModifier/>
<PublicModifier/>
<BIN0.B.06......raumreservation>
<PublicModifier/>
</BIN0.B.06......raumreservation>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<BIN1.D.29......raumreservation>
<PublicModifier/>
</BIN1.D.29......raumreservation>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<BIN2.A.01......raumreservation>
<PublicModifier/>
</BIN2.A.01......raumreservation>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<BIN2.A.06......raumreservation>
<PublicModifier/>
</BIN2.A.06......raumreservation>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<BIN2.D.27......raumreservation>
<PublicModifier/>
</BIN2.D.27......raumreservation>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<BIN2.E.23......raumreservation>
<PublicModifier/>
</BIN2.E.23......raumreservation>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<RAID-017......raumreservation>
<PublicModifier/>
</RAID-017......raumreservation>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<PublicModifier/>
<ifireservations......meetings>
<Calendar......meetings>
<Coffeemachine1......meetings>
<PublicViewer/>
</Coffeemachine1......meetings>
</Calendar......meetings>
</ifireservations......meetings>
<Calendar......meetings>
<Coffeemachine1......meetings>
<PublicViewer/>
</Coffeemachine1......meetings>
</Calendar......meetings>
<Coffeemachine1......meetings>
<PublicViewer/>
</Coffeemachine1......meetings>
<PublicViewer/>
<PublicViewer/>
<Coffeemachine2......meetings>
<PublicViewer/>
</Coffeemachine2......meetings>
<PublicViewer/>
<PublicViewer/>
<PublicViewer/>
<PublicViewer/>
<Coffeemachine3......meetings>
<PublicViewer/>
</Coffeemachine3......meetings>
<PublicViewer/>
<PublicViewer/>
<PublicViewer/>
<PublicViewer/>
</sogo>
</permissions>