Announcement

Collapse
No announcement yet.

"Verschachtelungs-Problem"

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • "Verschachtelungs-Problem"

    Hallo!

    Ich habe folgendes Problem: Ich möchte ein XML-File in ein andere transformieren. Mein Ursprungs-File sieht prinzipiell so aus:

    <?xml version="1.0" encoding="UTF-8"?>
    <book>
    <cell row="1" col="1">Value11</cell>
    <cell row="1" col="2">Value12</cell>
    <cell row="1" col="3">Value13</cell>
    <cell row="2" col="1">Value21</cell>
    <cell row="2" col="2">Value22</cell>
    <cell row="2" col="3">Value22</cell>
    <cell row="2" col="4">Value22</cell>
    <cell row="3" col="1">Value31</cell>
    <cell row="3" col="2">Value32</cell>
    <cell row="3" col="3">Value33</cell>
    <cell row="3" col="5">Value35</cell>
    </book>

    Die Anzahl der Reihen und Spalten ist variable, es müssen auch nicht immer alle Spaltenwerte "gesetzt" sein (row=3, col=4 fehlt z.B.).

    Das Ergebnis sollte nun folgendermaßen aussehen:

    <Level1>
    <Name>Value11</Name>
    <Level2>
    <Name>Value12</Name>
    <Level3>
    <Name>Value13</Name>
    </Level3>
    </Level2>
    </Level1>
    <Level1>
    <Name>Value21</Name>
    <Level2>
    <Name>Value22</Name>
    <Level3>
    <Name>Value23</Name>
    <Type>Value24</Type>
    </Level3>
    </Level2>
    </Level1>
    ....

    D.h. für jede Row gibt es einen Datensatz, der unterschiedlich viele Unterelemente enthalten soll, und die Zuordnung geschieht über den "Col"-Wert.

    Ich bekomme das einfach nicht hin, weil ich entweder bestimmte Tags erstmal nur öffnen dürfte um diese irgendwann später wieder zu schließen, was aber (anscheinend) nicht geht.
    Mein Zweiter Ansatz war es mit verschachtelten "Template-Match" zu versuchen, ist mir aber auch nicht gelungen.

    Kann mir da jemand helfen?

    Vielen Dank!

  • #2
    Deine beiden XML-Beispiele sind nicht konsistent, denn im ersten Beispiel gibt es drei 'cell'-Elemente mit Inhalt "Value22":
    Code:
    <cell row="2" col="2">Value22</cell>
    <cell row="2" col="3">Value22</cell>
    <cell row="2" col="4">Value22</cell>
    im zweiten Beispiel gibt es dann ein 'Name'-Element mit Inhalt "Value23", der Wert existiert im ersten Beispiel gar nicht, ebenso der Wert "Value24", der in einem 'Type'-Element auftaucht. Wann wird ein Wert aus einem 'cell'-Element in ein 'Name'-Element, wann in ein 'Type'-Element gepackt?

    Anhand der Beispiele wird es mir zumindest nicht klar, was du erreichen willst bzw. wie das erste Beispiel in das zweite Beispiel transformiert werden soll. Das müsstest du genauer erklären. Wenn du ein Eingabe-Beispiel postest, solltest du auch das komplette Resultat zu diesem Beispiel posten, das die Transformation erzeugen soll, nur "..." machen die Aufgabe nicht klarer.

    Comment

    Working...
    X