Estoy intentando leer el nombre de usuario y la contraseña de un correo electrónico usando Java Está devolviendo el contenido del correo en formato html y solo quería extraer el nombre de usuario y la contraseña que están presentes en la etiqueta <td>. A continuación se muestra mi fragmento de código HTML:

<table width="200">
   <tbody>
     <tr>
        <td colspan="2">Your Account Details:</td>
     </tr>
      <tr>
        <td>EmailId:</td>
        <td><a class="moz-txt-link-abbreviated" href="mailto:jainish.m.kapadia@trimantra.net">jainish.m.kapadia@trimantra.net</a></td>
      </tr>
      <tr>
         <td>Password:</td>
         <td>C3mRXh+|n#1J</td>
      </tr>
  </tbody>
</table>

¿Cómo lo logro?

1
NarendraR 13 dic. 2016 a las 11:23

2 respuestas

La mejor respuesta

No intente analizar HTML con RegEx, Para obtener una respuesta detallada sobre por qué no debería intentarlo, consulte esta SO respuesta.

Puede utilizar jsoup para analizar sus cadenas HTML de esta manera:

String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);

Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
  String linkHref = link.attr("href");
  String linkText = link.text();
}

Jsoup también ofrece métodos para la navegación jerárquica como

siblingElements();
nextElementSibling();

Y así sucesivamente.

3
Community 23 may. 2017 a las 11:45

Puede utilizar el siguiente fragmento de código:

String str = "your html";
Pattern pattern = Pattern.compile("(<td>(.*?)<\\/td>)");
Matcher matcher = pattern.matcher(str);

Esto le devolverá toda la etiqueta <td>. Ahora puede recorrer el matcher y obtener la cadena requerida.

1
SachinSarawgi 13 dic. 2016 a las 08:28