使用Jsoup解析以下HTML时:

String html = "<iframe allowfullscreen></iframe>";
Document doc = Jsoup.parseBodyFragment(html);
System.out.println(doc.body().html());


我得到以下输出:

<iframe allowfullscreen=""></iframe>


即使它必须具有相同的含义(source),也有任何方法告诉Jsoup将布尔属性保持其原始形式(即输入中的属性,在示例中为allowfullscreen而不是allowfullscreen="") ?

最佳答案

不幸的是,我认为没有简单的设置可以控制它。如果有的话,您可能希望在Document.OutputSettings中找到它。

正如我在评论中所说,好消息是该属性的原始形式得以保留,并且可以通过attr使用,但您无法分辨allowfullscreen本身与allowfullscreen=""之间的区别。

因此,您可以自己序列化文档,而不能以模数的形式来区别一个区别。或者,由于Jsoup是开源的,因此您可以为此添加一个Document.OutputSettings设置(以及可能在解析器中进行的修改,以告知上述两种情况之间的区别),并更新html和相关方法中的逻辑为了遵守设置,最好是通过分叉the project,进行更改,对更改进行测试并进行拉取请求。 :-)可能不是一个人想要的答案,但是OS的好处是您可以自己抓痒,并在此过程中改进项目。

07-24 19:02