From 9ff2795e34270ba71554c5fea6214dde1bdb37c3 Mon Sep 17 00:00:00 2001 From: Ruefors <1195930804@qq.com> Date: Sat, 22 May 2021 18:03:17 +0800 Subject: [PATCH] fix issue #1520 --- src/main/java/org/jsoup/Jsoup.java | 2 +- src/main/java/org/jsoup/safety/Cleaner.java | 10 +++++++++- src/test/java/org/jsoup/safety/CleanerTest.java | 13 +++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jsoup/Jsoup.java b/src/main/java/org/jsoup/Jsoup.java index a8f1f44726..0a43c75c61 100644 --- a/src/main/java/org/jsoup/Jsoup.java +++ b/src/main/java/org/jsoup/Jsoup.java @@ -227,7 +227,7 @@ public static Document parse(URL url, int timeoutMillis) throws IOException { @see Cleaner#clean(Document) */ public static String clean(String bodyHtml, String baseUri, Safelist safelist) { - Document dirty = parseBodyFragment(bodyHtml, baseUri); + Document dirty = parse(bodyHtml, baseUri); Cleaner cleaner = new Cleaner(safelist); Document clean = cleaner.clean(dirty); return clean.body().html(); diff --git a/src/main/java/org/jsoup/safety/Cleaner.java b/src/main/java/org/jsoup/safety/Cleaner.java index bbe44ce458..249d59568d 100644 --- a/src/main/java/org/jsoup/safety/Cleaner.java +++ b/src/main/java/org/jsoup/safety/Cleaner.java @@ -65,7 +65,15 @@ public Document clean(Document dirtyDocument) { Validate.notNull(dirtyDocument); Document clean = Document.createShell(dirtyDocument.baseUri()); - copySafeNodes(dirtyDocument.body(), clean.body()); + Element head,body; + if(dirtyDocument.head().childNodeSize() > 0){ + head = dirtyDocument.head(); + copySafeNodes(head, clean.body()); + } + if(dirtyDocument.body().childNodeSize() > 0){ + body = dirtyDocument.body(); + copySafeNodes(body, clean.body()); + } clean.outputSettings(dirtyDocument.outputSettings().clone()); return clean; diff --git a/src/test/java/org/jsoup/safety/CleanerTest.java b/src/test/java/org/jsoup/safety/CleanerTest.java index 33380549c6..eb1d4a9981 100644 --- a/src/test/java/org/jsoup/safety/CleanerTest.java +++ b/src/test/java/org/jsoup/safety/CleanerTest.java @@ -339,4 +339,17 @@ public void bailsIfRemovingProtocolThatsNotSet() { assertEquals(Document.OutputSettings.Syntax.xml, result.outputSettings().syntax()); assertEquals("
test