2012-05-07 72 views

Respuesta

3

puede ser este enlace puede ayudar:

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

+0

, gracias por su respuesta. Pero lo que quiero es una API java que tomará un contenido de archivo HTML como entrada y me dará el texto de marcado de Wiki. –

+0

@Vinay Bedre - vea mi respuesta a su pregunta; Puede usar la biblioteca de Mylyn para realizar su conversión. – JoshDM

-1

Por lo que yo sé que no hay manera de convertir HTML a Confluencia código 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.

+2

@Graham Hannington ha refutado esta respuesta en los comentarios debajo de su respuesta, y tanto él como yo hemos publicado formas de convertir HTML a lenguaje wiki Confluence. – JoshDM

10

Probar 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 Confluence 4 XML (es decir, como los presenta el complemento 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 su 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 añadido más tarde: Wikifier RT está aún más cerca de lo que desea.

+3

@Christian Koch: el formato de almacenamiento Confluence 4 no es XHTML. Más bien, el formato de almacenamiento XML de Confluence 4 incluye elementos que tienen los mismos nombres que algunos descendientes del elemento del cuerpo XHTML (y algunos de sus atributos). Atlassian solía referirse al formato de almacenamiento Confluence 4 como XHTML, pero últimamente (con algunas indicaciones) se ha estado refiriendo a él como "basado en XHTML". A la pregunta "¿Qué subconjunto de XHTML admite Confluence?" (2012-04-12), Atlassian respondió: "esta página ya es completa. Es probable que todas las etiquetas que ya no se vean documentadas en esta página se eliminen" –

+0

Intenté Wikifier RT y es perfecto. Gracias. – raisercostin

4

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

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:

<HTML> 
<BODY> 
<p>This is <b>bold text</b> and some <i>italic text</i>.<br/><br/>TEST!</p> 
</BODY> 
</HTML> 

Produce una salida Confluencia:

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

Descargué el archivo jar a través de Maven pero no pude encontrar el archivo HTMLParser. ¿Podría ayudarme – Tarun

1

pude alcanzar a HTML Estafa fluence-style WikiMarkup utilizando el DefaultWysiwygConverter de las propias bibliotecas de Java de Atlassian. Aquí está una prueba unitaria simplificada:

import com.atlassian.renderer.wysiwyg.converter.DefaultWysiwygConverter; 

String htmlString = "This is <em>emphasized</em> and <b>bold</b>"; 
DefaultWysiwygConverter converter = new DefaultWysiwygConverter(); 
String wikiMarkupString = converter.convertXHtmlToWikiMarkup(htmlString); 
Assert.assertEquals("This is _emphasized_ and *bold*", wikiMarkupString); 

El POM debe incluir los repositorios correctas y dependencias

<dependency> 
     <groupId>com.atlassian.renderer</groupId> 
     <artifactId>atlassian-renderer</artifactId> 
     <version>8.0.5</version> 
     <exclusions> 
      <exclusion> 
       <!-- This exclusion is necessary if you are in a situation which 
        it conflicts, EG: using spring-boot --> 
       <groupId>javax.servlet</groupId> 
       <artifactId>servlet-api</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

    <repositories> 
     <repository> 
      <!-- https://developer.atlassian.com/docs/advanced-topics/working-with-maven/atlassian-maven-repositories --> 
      <id>atlassian-public</id> 
      <url>https://packages.atlassian.com/maven/repository/public</url> 
      <snapshots> 
       <enabled>true</enabled> 
       <updatePolicy>never</updatePolicy> 
       <checksumPolicy>warn</checksumPolicy> 
      </snapshots> 
      <releases> 
       <enabled>true</enabled> 
       <checksumPolicy>warn</checksumPolicy> 
      </releases> 
     </repository> 
    </repositories> 
+1

? Creo que esta es la mejor opción. Está utilizando directamente el propio analizador de Atlassian. Algunas personas, [en los foros de atlassian] (https://community.atlassian.com/t5/Jira-questions/How-to-convert-html-to-Atlassian-markup-in-java-app/qaq-p/ 657726), tienen problemas para corregir las dependencias, así que le doy este ejemplo con un POM funcional en [github] (https://github.com/paul-nelson-baker/html-to-jira-markup). –

Cuestiones relacionadas