2008-09-12 26 views
33

¿Existe alguna manera fácil de transformar HTML en reducción con JAVA?HTML con Markdown con Java

Actualmente estoy usando la biblioteca Java MarkdownJ para transformar el marcado en html.

import com.petebevin.markdown.MarkdownProcessor; 
... 
public static String getHTML(String markdown) { 
    MarkdownProcessor markdown_processor = new MarkdownProcessor(); 
    return markdown_processor.markdown(markdown); 
} 

public static String getMarkdown(String html) { 
/* TODO Ask stackoverflow */ 
} 

Respuesta

38

Utilice esta XSLT.

Si necesita ayuda para utilizar XSLT y Java He aquí un fragmento de código:

public static void main(String[] args) throws Exception { 

     File xsltFile = new File("mardownXSLT.xslt"); 

     Source xmlSource = new StreamSource(new StringReader(theHTML)); 
     Source xsltSource = new StreamSource(xsltFile); 

     TransformerFactory transFact = 
       TransformerFactory.newInstance(); 
     Transformer trans = transFact.newTransformer(xsltSource); 

     StringWriter result = new StringWriter(); 
     trans.transform(xmlSource, new StreamResult(result)); 
    } 
+2

+1, eso es brillante. –

+4

IMPORTANTE: este XSLT se distribuye bajo una licencia CC-share-parecida, lo que significa: "Si [...] construye sobre este trabajo, puede distribuir el trabajo resultante solo bajo la misma licencia o similar a esta" –

+1

@ cx42net - no es TAN IMPORTANTE))) En muchos países, la licencia CC-share-parecida no tiene ningún poder legal EN ABSOLUTO;) – shabunc

2

estoy trabajando en el mismo tema, y ​​experimentando con un par de diferentes técnicas.

La respuesta anterior podría funcionar. Puede usar el jTidy library para hacer el trabajo de limpieza inicial y convertir de HTML a XHTML. Utiliza el XSLT stylesheet vinculado anteriormente.

Desafortunadamente no hay una biblioteca que tenga una función de una sola parada para hacer esto en Java. Podría intentar usar la secuencia de comandos de Python html2text con Jython, ¡pero aún no lo he intentado!

1

si utiliza editor de armas de destrucción masiva y desea obtener el código de reducción del precio en el lado del servidor, sólo tiene que utilizar estas opciones antes de cargar el guión wmd.js:

wmd_options = { 
     // format sent to the server. can also be "HTML" 
     output: "Markdown", 

     // line wrapping length for lists, blockquotes, etc. 
     lineLength: 40, 

     // toolbar buttons. Undo and redo get appended automatically. 
     buttons: "bold italic | link blockquote code image | ol ul heading hr", 

     // option to automatically add WMD to the first textarea found. 
     autostart: true 
    }; 
Cuestiones relacionadas