¿Cómo convierto el código HTML en Confluence Wiki Markup?

La documentación de la API para Mylyn Wikitext tiene funciones para convertir el marcado de Wiki a HTML, pero no puedo encontrar funciones para convertir / analizar el código HTML en el marcado de Wiki. La clase MarkupParser tiene el método parseToHTML , pero ¿dónde puedo encontrar el reverso?

Puede ser este enlace puede ayudar:

http://labs.seapine.com/htmltowiki.cgi

Prueba Wikifier .

No hace exactamente lo que quiere, pero es posible que encuentre suficiente o que sea un punto de partida útil.

Wikifier convierte los fragmentos del formato de almacenamiento XML Confluence 4 (es decir, tal como lo presenta el plugin Confluence Source Editor, sin un solo elemento raíz de documento) en el etiquetado de wiki de Confluence 3.

¿Por qué es esto relevante para tu pregunta? El formato de almacenamiento XML Confluence 4 incluye algunos elementos y atributos que tienen los mismos nombres que los elementos y atributos XHTML.

Para obtener más información, haga clic en el enlace Ayuda en la página web de Wikifier.

Nota: La hoja de estilo XSLT utilizada por la página web de Wikifier es un poco más reciente que la hoja de estilos XSLT incluida con el paquete de esquema relacionado.

Esto se agregó más tarde: Wikifier RT está aún más cerca de lo que quieres.

Así es como lo haces en Mylyn usando WikiText Standalone . Sustituya DocumentBuilder apropiado por el marcado Wiki que desee (deberá verificar la API para ver qué hay disponible, TextileDocumentBuilder también existe).

Archivo ConvertToConfluence.java :

 package com.stackoverflow.mylyn; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.StringWriter; import org.eclipse.mylyn.internal.wikitext.confluence.core.ConfluenceDocumentBuilder; import org.eclipse.mylyn.wikitext.core.parser.HtmlParser; import org.xml.sax.InputSource; public class ConvertToConfluence { public static String convertHTML(File htmlFile) { InputStream in = null; try { in = new FileInputStream(htmlFile); } catch (Exception ex) { // TODO: handle or re-throw file exception } InputSource inputSource = new InputSource(new InputStreamReader(in)); StringWriter writer = new StringWriter(); ConfluenceDocumentBuilder builder = new ConfluenceDocumentBuilder(writer); HtmlParser parser = new HtmlParser(); try { parser.parse(inputSource, builder); } catch (Exception ex) { // TODO: handle or re-throw parsing exception } return writer.toString(); } public static void main(String args[]) { File file = new File("c:\\filename.html"); System.out.println(convertHTML(file)); } } 

Archivo filename.html :

   

This is bold text and some italic text.

TEST!

Produce salida Confluence:

 This is *bold text* and some _italic text_. \\TEST! 

Pude lograr el WikiMarkup HTML to Confluence usando el DefaultWysiwygConverter de las propias bibliotecas Java de Atlassian. Aquí hay una prueba de unidad simplificada:

 import com.atlassian.renderer.wysiwyg.converter.DefaultWysiwygConverter; String htmlString = "This is emphasized and bold"; DefaultWysiwygConverter converter = new DefaultWysiwygConverter(); String wikiMarkupString = converter.convertXHtmlToWikiMarkup(htmlString); Assert.assertEquals("This is _emphasized_ and *bold*", wikiMarkupString); 

El POM debe incluir los repositorys y dependencias correctos

   com.atlassian.renderer atlassian-renderer 8.0.5    javax.servlet servlet-api       atlassian-public https://packages.atlassian.com/maven/repository/public  true never warn   true warn    

Por lo que sé, no hay forma de convertir HTML a etiquetado de Confluence wiki. Y dado que Atlassian deja de usar textil como marcado de wiki en Confluence 4.x, no hay necesidad de una conversión. El formato de página es XHTML.

    Intereting Posts