2

私はjsoupを使用してxml処理を行っています。問題は、xml エンティティを置き換えることです。つまり»、html エンティティを使用します。»

元の (xml) エンティティを保持するにはどうすればよいですか?

グルーヴィーなスクリプト:

import org.jsoup.Jsoup
import org.jsoup.nodes.Document
import org.jsoup.nodes.Entities
import org.jsoup.parser.Parser

String HTML_STRING = '''
    <html>
    <div></div>
    <div>Some text &#187;</div>
    </html>
  '''

Document doc = Jsoup.parse(new ByteArrayInputStream(HTML_STRING.getBytes("UTF-8")), "UTF-8", "", Parser.xmlParser())
doc.outputSettings().charset("UTF-8")
doc.outputSettings().escapeMode(Entities.EscapeMode.base)


println doc.toString()

結果:

<html> 
 <div></div> 
 <div>
  Some text &raquo;
 </div> 
</html>

Entities.EscapeMode.xhtml結果を使用すると、次のようになります。

<html> 
 <div></div> 
 <div>
  Some text »
 </div> 
</html>

ありがとう。

4

1 に答える 1

-1

出力文字セットとしてEscapeMode.xhtml(HTML パーサーではなく XML パーサーを使用する場合のデフォルト) との組み合わせを使用したい。ascii

デフォルトの出力文字セットは UTF-8 であり、出力文字セットが文字を直接サポートしている場合、jsoup はエンティティ エスケープを使用しないことを好みます (不必要なエスケープで CPU と帯域幅を浪費するため)。

出力文字セットをasciiusingに変更すると、必要なDocument.OutputSettings.charset("ascii")出力が得られます。

また、HTML を使用している場合は、おそらく出力構文をXMLに設定することをお勧めします。そうしないと、HTML パーサーが出力を HTML に確認させようとし、XML DOM ツリーを変更する可能性があります。

(出典:jsoupの作者)

于 2016-10-24T02:33:26.097 に答える