Jsoup — проверьте допустимый html-текст ввода с относительным путем

#java #jsoup

Вопрос:

У меня есть этот код:

 Whitelist whitelist = Whitelist.relaxed();
String test = "<a href="index.html?Proxy-Remote-User=ABC1">"
 

С помощью Jsoup, если я запущу

 Jsoup.isValid(test, whitelist)
 

Он возвращает значение false. Я думаю, это из-за отсутствия протокола. Есть ли способ сделать это приемлемым?

Комментарии:

1. Во-первых, в вашем примере отсутствуют кавычки. Но я предполагаю, что это, возможно, потому, что отсутствует закрывающий тег ( </a> )?

2. Я уверен, что есть обходной путь, где вы можете добавить абсолютный путь к началу URL-адреса перед проверкой(если вы не хотите изменять ссылки вручную).

Ответ №1:

Whitelist устарело, используйте Safelist вместо этого. Ваше предположение верно, проблема в протоколе. Я думаю, что вы должны использовать полный URL-адрес(с указанием http или https). Я заставил его работать с этим:

 test ="<a href="https:\www.somesite\index.html?Proxy-Remote-User=ABC1">";
System.out.println("Is valid:" Jsoup.isValid(test, safelist));
 

Выход:

 Is valid:true
 

Комментарии:

1. addProtocols("a","href","http"); в этом нет необходимости. В relaxed белом списке они уже определены как addProtocols("a", "href", "ftp", "http", "https", "mailto") .