Разбор html с Jsoup и удаление пробелов с определенным стилем

Я пишу приложение для друга, но я столкнулся с проблемой, на веб-сайте есть эти

<span style="display:none">&amp;0000000000000217000000</span> 

И мы понятия не имеем, что они собой представляют, но мне нужно их удалить, потому что мое приложение выводит их значение.

Есть ли способ проверить, есть ли это в Элементах и ​​удалить его? У меня есть парсинг для каждого цикла, но я не могу понять, как эффективно удалить этот элемент.

благодаря

Если вы хотите полностью удалить эти промежутки на основе атрибута стиля, попробуйте этот код:

 String html = "<span style=\"display:none\">&amp;0000000000000217000000</span>"; html += "<span style=\"display:none\">&amp;1111111111111111111111111</span>"; html += "<p>Test paragraph should not be removed</p>"; Document doc = Jsoup.parse(html); doc.select("span[style*=display:none]").remove(); System.out.println(doc); 

Вот результат:

 <html> <head></head> <body> <p>Test paragraph should not be removed</p> </body> </html> 

Просто попробуйте следующее:

 //Assuming you have all the data in a Document called doc: String cleanData = doc.select("query").text(); 

Текст(); Метод очистит все html-теги и заменит все кодировки на человекочитаемый контент. О да, и тогда есть метод ownText (); Это тоже может помочь. Я не могу сказать, что лучше всего подходит для ваших целей.

Вы можете использовать JSOUP для доступа к innerHTML элементов, удаления экранированных символов и замены innerHTML:

 Elements elements = doc.select('span'); for(Element e : elements) { e.html( e.html().replaceAll("&amp;","") ); } 

В приведенном выше примере получите набор всех элементов, используя селектор для всех элементов, которые содержат оскорбительный символ. Затем замените &amp; С пустой строкой или любым другим символом, который вы пожелаете.

Кроме того, вы должны знать, что &amp; Это escape-код для символа & . Без экранирования & символов у вас могут возникнуть проблемы проверки HTML. В вашем случае, без дополнительной информации, я предполагаю, что вы просто действительно хотите их устранить. Если нет, это поможет вам начать работу. Удачи!

Если вам нужно удалить конечные числа:

 // eliminate ampersand and all trailing numbers e.html( e.html().replaceAll("&amp;[0-9]*","") ); 

Дополнительные сведения о регулярных выражениях см. В статье Javadocs на шаблоне Regex .