Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#16

AW: XML parsen, aber wie

  Alt 29. Mär 2017, 16:34
Oh, da war ein Schreibfehler drinne, muss latürnich
Delphi-Quellcode:
 // Tags brauchen wir nicht, ebensowenig wie Leerzeilen.
      for i := sl.Count - 1 downto 0 do begin
        if (Copy(sl[i],1,1) = '<')
        or (sl[i] = '') then sl.Delete(i);
      end;
heißen.

Alle Zeilen, die mit 'nem < beginnen, fliegen raus, ebenso alle Leerzeilen.

Endetags mussen hier nicht separat berücksichtigt werden, weil sie im XML, um das es hier geht, nicht vorkommen.

Wir haben hier immer mehr oder weniger viele öffnende Tags.
Dann den Inhalt.
Dann die entsprechende Anzahl schließender Tags.

Wenn nun vor die < und hinter die > jeweils ein Zeilenumbruch eingefügt wird, dann sind alle Tags separiert.

Sie und die ggfls. entstehenden Leerzeilen fliegen raus und übrig bleibt der Inhalt.

Natürlich ist das nicht auf beliebige XML-Dateien anwendbar, aber danach war auch nicht gefragt.

Das "Schöne" an dieser Vorgehensweise:

Sie funktioniert auch noch dann, wenn man fehlerhaftes XML bekommt, bei dem "richtige" Parser zu Recht streiken.

Mit dieser Vorgehensweise funktioniert seit Jahren meine Suchmaschine für HTML-Seiten. Es ist wurscht, ob die Seiten gültiges HTML enthalten und von Browsern/Parsern richtig oder näherungsweise interpretiert werden können.

Als Ergbenis erhalte ich immer ausschließlich den Text der Seiten und kann ihn, nach entsprechender Weiterverarbeitung, in den Suchindex eintragen.

Geändert von nahpets (29. Mär 2017 um 16:45 Uhr)
  Mit Zitat antworten Zitat