Ich entwickle eine Web-App mit Scala und Lift Framework. Ich habe in der Datenbank, die HTML-Perex der Seite enthält
%Vor%Und in einem Szenario muss ich diese perex drucken, aber ohne html-Tags.
%Vor%Es ist möglich, dies in Scala zu tun? Weil ich versucht habe, mit Google zu suchen, aber ohne Erfolg.
Danke für alle Antworten.
Wenn die Zeichenfolge gültiges XML ist, können Sie Folgendes verwenden:
scala.xml.XML.loadString("<b>Hi all, this is parex</b>").text
Wenn es sich nicht um gültiges XML handelt, können Sie scala.util.matching.Regex
oder eine HTML-Parsing-Bibliothek wie Ссылка
Die beste Lösung, die ich gefunden habe, war, cyberneko zu verwenden, um Ihre Zeichenfolge zu parsen und eine "clevere" SAX-Ereignisbehandlung durchzuführen. p>
cyberneko analysiert Ihren HTML-Code selbst dann, wenn er ungültig ist. Dies ist der Fall für den Großteil des HTML-Codes, den Sie wahrscheinlich in freier Wildbahn finden.
Wenn Sie eine benutzerdefinierte ContentHandler
registrieren, die im Wesentlichen alle außer den character
-Ereignissen ignoriert und diese nur an einen Zeichenfolgengenerator anfügt, erhalten Sie eine gute erste Annäherung mit einem ärgerlichen Fehler: Wörter, die durch ein Blockelement getrennt sind wird am Ende verkettet ( for<br/>example
= & gt; forexample
).
Eine bessere Lösung besteht darin, eine Liste aller Blockelemente zu erhalten und Ihr ContentHandler
auf startElement
-Ereignisse hören zu lassen. Wenn das Element Block 1 ist, fügen Sie einfach ein Leerzeichen an Ihren Zeichenfolgengenerator an.
Beachten Sie, dass dies zwar gut zu funktionieren scheint, aber nicht perfekt für Ihren Anwendungsfall. <br/>
wird beispielsweise nicht in einen Zeilenumbruch umgewandelt. Es sollte jedoch nicht zu viel Arbeit sein, um dies hinzuzufügen, wenn es erforderlich ist.
TagSoup sollte Ihre Anforderung erfüllen, um eine echte HTML-Datei zu analysieren .
sbt-Abhängigkeiten,
%Vor%Beispielcode,
%Vor%Verwendung,
%Vor%Tags und Links scala string parsing lift strip-tags