2012-05-20 1 views
3

Я пишу приложение для друга, но я столкнулся с проблемой, на сайте есть этиСинтаксический HTML с Jsoup и удаление пролеты с определенным стилем

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

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

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

благодарит

ответ

8

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

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> 
0

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

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

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

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

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

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

Для получения более подробной информации о регулярных выражениях см Javadocs on Regex Pattern.

+0

Я хотел бы число все прошло тоже не просто & – Samuel

+0

Samuel, если весь внутреннийHTML - это '&' и число, то просто используйте 'e.html (" ");' и установите его равным пустой строке. В противном случае используйте регулярные выражения. – jmort253

1

Просто попробуйте это:

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

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