我有一个文本文件“Data3.txt”。这个文件包含很多html。
我将此文件传递给Jsoup,以便使用此示例解析所有html:“Jsoup : How to parse multiple HTML files from local drive?”。
我也打印出文档的内容,以确保它具有所有的html init。
但是文档只包含html的一小部分(html,head,script,body标签)。我究竟做错了什么?我如何传递所有的HTML
这是我的代码:
cameraLayout
我的Data3.txt文件:https://www.dropbox.com/s/83slaan4hmtzr9n/Data3.txt?dl=0
答案 0 :(得分:2)
发生在你身上的原因是Jsoup.parse()
方法默认使用Parser.htmlParser()
。根据{{1}}方法文档:
创建一个新的HTML解析器。此解析器将输入视为HTML5,并基于对传入标记的语义的了解强制创建规范化文档。
您的输入文件不包含有效且严格的HTML5。有效且严格的HTML5代码的要求之一是将所有HTML标记缩小。输入文件中的标记是大写的,因此默认解析器会跳过它们。
您可以做两件事:
请改用Parser.xmlParser()
,例如使用以下方法:
Parser.htmlParser()
XmlParser将每个标记视为正确的标记,因此您必须注意切换到XmlParser意味着您的HTML代码不会被解析器验证。它旨在与XML文件一起使用,但它可以帮助您解决问题。
当然,它需要使用Document document = Jsoup.parse(InputStream in, String charsetName, String baseUri, Parser parser);
代替InputStream
,但可以轻松地将一个转换为另一个,例如File