#jsoup
#jsoup
Вопрос:
Я хотел бы получить помощь в JSOUP, чтобы разрешить только теги изображений.
Моя строка выглядит так:
<p>some text here</p>
<p>some text here</p>
<p><img alt="alt" src="http://www.example.com/image.jpg" /></p>
<p><img alt="alt" src="http://www.example.com/image.jpg" /></p>
<p>some text here</p>
используя этот код в JSOUP, мне удается получить следующее:
Whitelist customwhitelist1 = new Whitelist();
customwhitelist1.addAttributes("img", "src", "alt");
String final = Jsoup.clean(unsafe, customwhitelist1);
some text heresome text here
<img alt="alt" src="http://www.example.com/image.jpg" />
<img alt="alt" src="http://www.example.com/image.jpg" />
some text here
но мой конечный результат должен быть
<img alt="alt" src="http://www.example.com/image.jpg" />
<img alt="alt" src="http://www.example.com/image.jpg" />
есть предложения? Спасибо
Комментарии:
1. Вы хотите выбрать
<img>
теги и записать их?
Ответ №1:
Если вам нужны только теги img в документе, вам не нужно использовать белый список. Вместо этого вы могли бы сделать что-то вроде
doc.html(doc.select("img").toString());
Также, если вы хотите, чтобы тело документа содержало только теги img, сделайте следующее
doc.body().html(doc.select("img").toString());
Ответ №2:
При очистке с помощью JSoup это не удаляет InnerText
значение, поэтому, чтобы получить желаемый результат, вам придется удалить <p>
теги перед запуском очистки.
Сначала вам нужно будет удалить <p>
теги с текстом, и поскольку в них нет дочерних узлов, вы можете удалить их, выбрав из этого.
//Select all the p-tags, if they have a zero size list of children, remove them
Document doc = Jsoup.parse(html);
for (Element e : doc.select("p")) {
if(e.children().size() == 0){
e.remove();
}
}
После этого очистите свой документ!
String final = Jsoup.clean(doc.body().html(), customwhitelist1);
Комментарии:
1. ваш код также удаляет изображения, поскольку они также включены в теги <p>.
2. Верно! Мне нужно будет посмотреть на это немного дальше!