2013-08-21 3 views
1

Здравствуйте, я пробовал следующие ответы: How to replace a tag using jsoup и Replace HTML tags using jsoup к моему делу безуспешно. Я разбираю веб-сайт с JSoup, и я просматривал GIF-образы в виде букв. К счастью, эти gif-изображения имеют определенное имя, например. a.gif для буквы «A».Замена тега на буквы с помощью JSoup

HTML вход:

<body> 
    <p><img src="http://www.example.com/images/a.gif" align="left">mong us!</p> 
</body> 

Желаемый результат:

<body> 
    <p>Among us!</p> 
</body> 

Мой Java-код (ниже) не печатает ожидаемый результат:

Document document = Jsoup.connect("http://www.example.com").get(); 
if(document.select("img").attr("src").contains("a.gif")) 
    { 
    document.select("img").get(0).replaceWith(new Element(Tag.valueOf("img"), "A")); 
    } 

Спасибо за вашу помощь.

ответ

1

Использование TextNode вместо Element.

Document document = Jsoup.parse(html); 
if (document.select("img").get(0).attr("src").contains("a.gif")) { 
    document.select("img").get(0).replaceWith(new TextNode("A", "")); 
    System.out.println(document); 
} 

Приведенный выше код может печатать html, как вы ожидали.

+0

Спасибо, это работает с незначительным дополнением, если я добавляю в заявлении .get IF (0) ; 'if (document.select (" img "). get (0) .attr (" src "). содержит (" a.gif "))' – Rod

+0

@Rodo Да, я пропустил '.get (0)' in мой оператор 'IF'. Я исправлю это в своем ответе. Благодарю. –

+0

@JasonCao Я хочу заменить путь изображения. Поэтому я сохраняю изображение локально и отображаю его из локального пути вместо пути на сервере. – anup

2

Попробуйте это!

Elements elements = doc.select("img[src$=a.gif]"); 
    for(Element element : elements) 
    { 
     element.replaceWith(new TextNode("A", null)); 
    } 
+0

Это работает, но мне нужен подсказку IF, так как я могу пробежать разные буквы. Благодарю. – Rod

+0

Спасибо @Niranjan! Похоже, это единственный способ сделать это. 'A' будет' element.text() '. –

1

попробовать это:

Document document = Jsoup.parse(html); 
if (document.select("img").get(0).attr("src").contains("a.gif")) { 
    document.select("img").get(0).replaceWith(new TextNode("A", null)); 
} 
+0

Не могли бы вы объяснить, почему это работает? – Daniel

+1

Спасибо, код работает по желанию, если я добавлю в оператор IF .get (0); 'if (document.select (" img "). get (0) .attr (" src "). содержит (" a.gif "))' – Rod

+0

спасибо @rodo Я редактировал код. –

1

Попробуйте:

Document document = Jsoup.connect("http://www.example.com").get(); 
    if(document.select("img").attr("src").contains("a.gif")) 
     { 
     String result =""; 
     String src =document.select("img").attr("src").text(); 
     result = src.replace(src,"A"); 
     System.out.println(result); 

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