1
我想解析的只是包含尖括號作爲文本一部分的html文檔的文本。如何防止Jsoup在解析文本時擦除文本中的尖括號
例如,HTML文件看起來是這樣的:
<html>
<head></head>
<body>
<div>
<p>1. <someUnicodeString></p>
<p>2. <foo 2012.12.26.></p>
<p>3. <123 2012.12.26.></p>
<p>4. <@ 2012.12.26.></p>
<p>5. foobarbar</p>
</div>
</body>
</html>
我想解析文本文件的結果是這樣的:
1. <someUnicodeString>
2. <foo 2012.12.26.>
3. <123 2012.12.26.>
4. <@ 2012.12.26.>
5. foobarbar
我使用Jsoup的解析函數實現如下所示,
Document doc = null;
try {
doc = Jsoup.parse(new File(path), "UTF-8");
doc.outputSettings(new Document.OutputSettings().prettyPrint(false));
doc.outputSettings().escapeMode(EscapeMode.xhtml);
//set line breaks in readable format
doc.select("br").append("\\n");
doc.select("p").prepend("\\n\\n");
String bodyText = doc.body().html().replaceAll("\\\\n", "\n");
bodyText = Jsoup.clean(bodyText, "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));
File f = new File(textFileName+".txt");
f.getParentFile().mkdirs();
PrintWriter writer = new PrintWriter(f, "UTF-8");
writer.print(Parser.unescapeEntities(bodyText, false));
writer.close();
} catch(IOException e) {
//Do something
e.printStackTrace();
}
然而,一旦Jsoup完成解析過程,它會爲每個角度支架添加標籤,然後添加字符。
<p>1. <someUnicodeString></someUnicodeString></p>
<p>2. <foo 2012.12.26.></foo></p>
<p>3. <123 2012.12.26.></p>
<p>4. <@ 2012.12.26.></p>
<p>5. foobarbar</p>
最終產生的結果
1.
2.
3. <123 2012.12.26.>
4. <@ 2012.12.26.>
5. asdasd
如何防止Jsoup從解析擦除時,裏面的文字尖括號?
或者有沒有辦法讓Jsoup認識到某些角度括號不是html元素? (也許使用正則表達式?)
我是新來的Jsoup,非常感謝任何形式的幫助。 謝謝。
您的HTML似乎無效。請看看[這個答案](http://stackoverflow.com/a/10462413/1992780)。 –
謝謝你的評論!我想一個好的開始就是遍歷元素,並在開始解析之前將文本中的「<」字符轉換爲「<」。 – Joon