2011-12-13 7 views
5

Tengo el siguiente código HTML¿Cómo reemplazo un elemento?

<html> 
<head> 
    <title>test</title> 

</head> 
<body> 
    <table> 
    <caption>table title and/or explanatory text</caption> 
    <thead> 
    <tr> 
    <th>header</th> 
</tr> 
</thead> 
<tbody> 
     <tr> 
     <td id=\"test\" width=\"272\"></td> 
</tr> 
</tbody> 
</table> 
<a href=\"http://www.google.fi\" style=\"color:black\">Test link</a> 
<a href=\"http://www.google.fi\"><img src=\"http://www.google.se/images/nav_logo95.png\" /></a>" 
</body> 
</html>; 

y quiero encontrar el primer enlace con jsoup y reemplazarlo con un texto

Element elem = page.select("a[href=" + link.getUrl() + "]:contains(" + link.getName() + ")").first(); 

que sólo puede reemplazar el código HTML interno con elem.html("foo") o imprimir el outerHTML con elem.outerHtml()

¿Alguien sabe cómo puedo lograr esto?

Respuesta

13

¡He encontrado la respuesta!

TextNode text = new TextNode("foo", ""); 
elem.replaceWith(text); 
0

vez que haya encontrado el elemento que desea trabajar, es posible aplicar los comandos tal como se explica aquí: http://jsoup.org/cookbook/modifying-data/set-html

no podía hacerlo bien. Estoy tratando esto:

elemento.prepend("<a href='www.test.com'>");  
elemento.html("Roberto C. Santos.");     
elemento.append("</a>"); 
elemento.wrap("<a href='www.test.com'> </a>"); 

Pero yo estoy haciendo esto:

<td><a href="www.test.com"> <a style="" target="_self" title="" href="http://ivv.veveivv.vvzenes.com.br/mao/ara/ccacao" data-mce-href="resolveuid/5cc1c7c8c9efcacaaeedec22a9c69a54" class="internal-link">Roberto C. Santos.</a></a></td> 
    </tr> 

todavía no sé la manera exacta para intercambiar el contenido de un elemento de URL.

Me gustaría tener, como resultado:

<a href='www.test.com'> Roberto C. Santos.</a>" 

¿Cómo borro la coul'd href que está entre medio?

+0

Lo que no estaba bien era conseguir el elemento incorrecto para trabajar. La mejor manera que encontré, hasta ahora, para seleccionar el elemento correcto es recorrer todos los elementos. Un bucle anidado ayudaría si aún no se encuentra el exacto. Por ejemplo: para (element elem: contElems) { if (elem.id()! = "") System.out.println (elem.id()); \t Elementos contElems1 = contElems.select ("href, a [href], a [data-href], enlace [href], a [título]"); para (Elemento elem1: contElems1) {// ponga código aquí } // (y/o) Coloque código aquí } –

+0

No estoy empezando a conocer cómo poner un salto de línea en el comentario anterior ... –