Ich versuche nur die Texte eines HTML-Dokuments zu analysieren, das spitze Klammern als Teil des Textes enthält.So verhindern Sie, dass Jsoup spitze Klammern im Text beim Analysieren löscht
Zum Beispiel würde die HTML-Datei wie folgt aussehen:
<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>
ich das Ergebnis der analysierten Textdatei so sein wollen:
1. <someUnicodeString>
2. <foo 2012.12.26.>
3. <123 2012.12.26.>
4. <@ 2012.12.26.>
5. foobarbar
Ich Jsoup die Parse-Funktion um dies wie unten gezeigt zu erreichen,
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();
}
Wenn Jsoup jedoch den Parsing-Prozess durchläuft, fügt es Tags für jede spitze Klammer gefolgt von Zeichen hinzu.
<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>
produzieren schließlich das Ergebnis
1.
2.
3. <123 2012.12.26.>
4. <@ 2012.12.26.>
5. asdasd
Wie kann ich Jsoup von Löschwinkel-Klammern innerhalb Text zu verhindern, wenn das Parsen?
Oder gibt es eine Möglichkeit, Jsoup zu erkennen, dass bestimmte spitze Klammern keine HTML-Elemente sind? (vielleicht mit Regex?)
Ich bin neu in Jsoup und würde jede Art von Hilfe sehr zu schätzen wissen. Danke.
Ihr HTML scheint nicht gültig. Bitte werfen Sie einen Blick auf [diese Antwort] (http://stackoverflow.com/a/10462413/1992780). –
Vielen Dank für den Kommentar! Ich denke, ein guter Ausgangspunkt ist es, die Elemente zu durchlaufen und die "<" Zeichen im Text in "<" zu konvertieren, bevor ich mit der Analyse anfange. – Joon