Mit liegen zwei
XML Schemata vor:
Delphi-Quellcode:
Die Schemata als grafische Darstellung:
1.
/-lkno-----kno(0-unendlich)
kno-------/
\
\-zus
2.
(Abschnittstyp]
**********************************************
* /-hinw *
* / *
stl--------abschnitt------/ *
(0-unendlich) * \ ***************** *
* \ /-Abschnitt-------Abschnittstyp * *
* \ / ***************** *
* \-/ *
* \ *
* \ *
* \tl (0-unendl.
**********************************************
und die dazugehörigen
XML Dokumente.
Ich soll nun das eine
XML Dokument in das andere umwandeln, dazu weiß ich welcher Knoten in dem einen zu welchem in dem anderen
XML Dokument werden soll, dasselbe gilt für die Attribute.
Nun habe ich angefangen das Programm zu schreiben. Ich Lese immer einen Knoten aus und füge diesen dann in das andere Dokument ein.
Leider hab ich nicht darauf geachtet, das zb ein Abschnitt wieder einen Abschnitt bzw. ein kno wieder ein kno enthalten kann.
Wenn ich daher weiter so vorgehe wie bisher werde ich mit dem Progi nie Fertig, da ein Abschnitt ja wiederum unendlich viele Abscnitte enthalten kann.
Hier ein Bsp.Code wie ich es bisher mache:
Delphi-Quellcode:
xml_ziel.ChildNodes['Stlbzlb'].Childnodes[i].AddChild(c_Abschnitt);
xml_ziel.ChildNodes['Stlbzlb'].Childnodes[i].ChildNodes[j].Attributes['Bez']:=pkno_nodes[Lb_Leistungsbereich.ItemIndex].ChildNodes[0].ChildNodes[i].ChildNodes[0].ChildNodes[j].AttributeNodes['Bez'].Text;
Da ich ein Neuling in Sachen Delphi, auch in
XML, bin bräuchte ich mal einen Tip wie ich es nun realisieren kann irgendwie etwas so allgemein zu definieren, das ich es falls eben innerhalb eines kno mit dem Attribut Typ='Knoten' wieder ein kno mit dem Attribut Typ='Knoten' auftritt diesen eben auch wieder auslese bzw. wieder einen Abschnitt schreibe.
Anderes, wenn es einen Knoten kno mit dem Attribut Typ gibt und der Wert des Attribut 'Knoten' ist, dann gibt es auch einen weiteren Abschnitt im anderen Dokument, falls es von einem anderen Typ ist gibt es zwar auch noch eine weitere Ebene, aber das ist dann die letze.
Kann man dies irgendwie mit Klassen realisieren oder mit Proceduren oder was habt ihr für eine Idee?
Bin für jeden Tip dankbar!!
PS: Will keinen vollständigen Quellcode (dazu sind es wohl eh zu wenig Angaben), aber ein kleines Bsp wär nett schlecht und eben Tipps
.
Danke!!
benutzte die
msxml