9

Scala と Lift フレームワークを使用して Web アプリを開発しています。ページのhtml perexを含むDBにレコードがあります

<b>Hi all, this is perex</b>

そして、あるシナリオでは、この perex をユーザーに印刷する必要がありますが、html タグは使用しません。

Hi all, this is perex

Scalaでこれを行うことは可能ですか? Googleで検索しようとしたが、成功しなかったためです。

すべての返信に感謝します。

4

3 に答える 3

8

文字列が有効な XML の場合は、次を使用できます。

scala.xml.XML.loadString("<b>Hi all, this is parex</b>").text

有効な XML でない場合は、http://jsoup.org/scala.util.matching.Regexのような HTML 解析ライブラリを使用できます。

于 2011-03-22T14:44:08.217 に答える
0

私が見つけた最善の解決策は、cybernekoを使用して文字列を解析し、「賢い」SAX イベント処理を行うことでした。

たとえそれが無効であっても、cyberneko はあなたの HTML を解析します。

ContentHandler基本的にすべてのイベントを無視し、それらを文字列ビルダーに追加するカスタムを登録するcharacterと、ブロック要素で区切られた単語が連結されてしまう ( for<br/>example=> forexample) という厄介な欠陥を伴う、適切な最初の概算が得られます。

より良い解決策は、すべてのブロック要素のリストを取得し、イベントをContentHandlerリッスンすることです。startElement要素がブロック 1 の場合は、文字列ビルダーにスペース文字を追加するだけです。

これは正常に機能しているように見えますが、ユースケースには完全ではない可能性があることに注意してください。<br/>たとえば、改行にはなりません。ただし、必要に応じてこれを追加するのはそれほど面倒ではありません。

于 2016-01-04T10:50:28.340 に答える