2012-07-08 9 views
6

Necesito volver a asignar elementos jsoup a compensaciones de caracteres específicos en el código fuente HTML. En otras palabras, si tengo HTML que se parece a esto:Obtener compensaciones de caracteres para elementos en jsoup

Hello <br/> World 

necesito saber que "Hola" comienza en la posición 0 y tiene una longitud de 6 caracteres, <br/> se inicia en el desplazamiento 6 y tiene una longitud de 5 caracteres, etc.

No pude encontrar un getter en el Elemento javadoc que devuelve esta información. ¿Se puede recuperar?

+0

¿Encontró una solución para esto que no resultó en la escritura de su propia gramática? – elaRosca

+0

No. Todavía estoy usando jflex. – ccleve

Respuesta

0

No creo que Jsoup tenga esta funcionalidad. Esta pregunta parece más cercana al análisis léxico que el análisis de HTML.

Escribía una gramática, y luego escribía un lexer en contra de esa gramática que connotaba el HTML y proporcionaba las compensaciones que estaba buscando.

Primero, analice el documento con Jsoup para verificar que sea HTML válido.

Luego, analice léxicamente el documento con una gramática. Una gramática podría ser:

Document := {optional-opening-tag} | {literal} {optional-opening-tag} | {optional-closing-tag} 

optional-opening-tag := ["<" {literal} ">" {optional-opening-tag}|{literal} ] | "" 

optional-closing-tag := "</ {literal} ">" | "" 

literal := any string of characters not beginning with whitespace, or containing "<" 

Inserte cada ficha que se encuentran en un objeto que almacena el token, el índice del primer carácter, y la longitud.

+0

Sí, esta es la respuesta correcta. De hecho, ya había escrito un Lexer usando JFlex, y funciona, y todavía lo estoy usando, pero prefiero no mantenerlo. Estaba tratando de deshacerme del código. – ccleve

Cuestiones relacionadas