gpt4 book ai didi

java - 为什么 JSoup 会删除元素 ID?

转载 作者:行者123 更新时间:2023-11-29 07:10:31 26 4
gpt4 key购买 nike

我正在使用 JSoup 清理一些不受信任的 HTML。我发现如果我打电话

String html = "<div id='foo'><script type='text/javascript'>alert('hello');</script></div>";
String cleanedHtml = Jsoup.clean(html, Whitelist.relaxed());

此时cleanedHtml

<div><div>

所以 <script>标签已被正确删除,但神秘的是,id 也被删除了<div> 的属性.是否有任何充分的理由说明为什么应该删除它或者它是一个错误?

最佳答案

默认情况下,id 属性被移除;将其添加为允许的属性:

Whitelist whitelist = Whitelist.relaxed().addAttributes("div", "id");
System.out.println(Jsoup.clean(html, whitelist));

=> <div id="foo"></div>

这是一个错误吗?不是 AFAIC;它在源代码中。不过,IMO 存在文档错误。

是否有“任何充分的理由”为什么要删除它?不确定那个,但像这样的属性不是结构性的:删除它不会改变 DOM。这就是关于白名单的事情——它们明确允许,并且必须精心策划以满足您的确切需求。

关于java - 为什么 JSoup 会删除元素 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14303691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com