2015-10-06 3 views
0

Это на Android и нужно исправить html перед загрузкой в ​​WebView.как заменить определенный текст в гиперссылке

обычно это может быть сделано путем

(<a[^>]+>)(.+?)(<\/a>) 

, чтобы получить группу $ 1 затем заменить текст.

Что делать, если есть другие неизвестные дети внутри тега < a>? приведенный ниже пример имеет < a> < p> ... текст </p> </a>, но < p> может что-то еще неизвестное.

Действительно, он хочет заменить только содержимое текстового элемента любого дочернего элемента внутри элемента.

<a href="http://news.newsletter.com/" target="_blank"> 
    <p><img alt=“Socialbook" border="0" height="50" 
    src="http://news.newsletter.com/images/socialbook.gif" width="62"> 
    THIS IS THE TEXT NEEDED TO REPLACE<p> 
</a> 

Это можно сделать внутри JAVA или должно быть сделано внутри javascript WebView?

+0

$ regex = "~> [\ w \ s] +? <~"; – jessica

+0

не использовать regex для этого. – njzk2

ответ

2

Вы можете использовать любой Java-анализатор Java html. Например. JSoup:

String html = "<html><head><title>First parse</title></head>" 
    + "<body><a href="..."><p>Parsed HTML into a doc.</p></a></body></html>"; 
Document doc = Jsoup.parse(html); 
Elements links = doc.select("a"); 
for (Element link : links) 
    link.text("~" + link.text() + "~"); 

См Element API Docs.

+0

хорошее предложение, любой образец, чтобы показать, как применить изменения ко всему элементу текстового контента? – lannyf

+0

нашел образец на http://stackoverflow.com/questions/30425002/how-i-can-replace-text-in-the-each-tag-using-jsoup копия здесь. Элемент entry = doc.select ("div"). First(); Элементы тегов = entry.getAllElements(); for (Element tag: tags) { для (Node child: tag.childNodes()) { if (дочерний экземпляр TextNode &&! ((TextNode) child) .isBlank()) { System.out.println (child); // текст ((TextNode) child) .text ("word"); // заменить на слово } } } – lannyf

Смежные вопросы