DOM erzeugen?
Übersicht

CO2ehemals "SirMO"Betreff: DOM erzeugen? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich habe ein kleines Problem: Ich möchte aus einem HTML-Dokument ein Document Object Model erstellen. Dafür habe ich mir eine Funktion geschrieben, die mir zunächst alle Tags aus diesem HTML-Dokument liefert und diesen dann einer Ebene zuordnet (<html> ist Ebene 1, <head> und <body> 2, usw.). Das HTML-Dokument sieht folgendermaßen aus Code: [AUSKLAPPEN] <html>
<head><title>Hallo</title></head> <body> <p>Dies ist ein Test</p>Test <span>Hallo</span> </body> </html> Die Funktion erstellt daraus folgende Tag-Struktur Zitat: DebugLog:<html> (1)
In Klammern die jeweilige Ebene des Tags (Das scheint auch soweit richtig zu sein)
DebugLog:<head> (2) DebugLog:<title> (3) DebugLog:<body> (2) DebugLog:<p> (3) DebugLog:<span> (3) Die Funktion sieht bis jetzt so aus BlitzMax: [AUSKLAPPEN] Type TDocumentObject Meine Frage ist jetzt: Wie kann ich daraus jetzt die Beziehungen erzeugen? |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
- Zuletzt bearbeitet von CO2 am So, Okt 27, 2013 17:50, insgesamt 2-mal bearbeitet
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo.
Erstens: Dein Code ist extrem schwer zu lesen, da du viel zu viele Einrückungsstufen hast. Versuche das mal lesbarer zu machen, indem zu z.B. Teile davon in neue Funktionen packst (Natürlich nur so, wie es noch Sinn ergibt). Um deine Frage zu beantworten: - Du musst deine Liste durchgehen - Für jede Ebene packst du jeweils den letzten Tag in eine Variable - Der Parent eines Tags ist immer der letzte Tag mit der "um 1 kleineren" Ebene Pseudo-Code: Code: [AUSKLAPPEN] For tag = EachIn tags
lastTag( tag.ebene ) = tag tag.parent = lastTag( tag.ebene - 1 ) Next Gruß, Tennisball |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oder nimm doch einfach ein libxml modul, das tut zimlich genau das. | ||
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, vielen Dank für die Antworten!
@ Tennisball: In der MaxIDE habe ich eingestellt, dass ein Tab 4 Leerzeichen entspricht und da ist das gut lesbar... Hier im Code-Tag sieht es tatsächlich etwas seltsam aus ![]() Ich versuche deine Lösung mal umzusetzen @ BtbN: Das wäre viel zu einfach ![]() |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group