2012-05-07 13 views

risposta

3

può essere questo link può aiutare:

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

+0

Grazie per la risposta. Ma quello che voglio è un'API Java che prenderà un contenuto di file HTML come input e mi darà il testo del markup Wiki. –

+0

@Vinay Bedre - guarda la mia risposta alla tua domanda; È possibile utilizzare la libreria Mylyn per eseguire la conversione. – JoshDM

-1

Per quanto ne so non c'è modo per convertire HTML in Confluence wiki markup. E poiché Atlassian smette di usare il tessile come markup wiki in Confluence 4.x non c'è bisogno di una conversione. Il formato della pagina è XHTML.

+2

@Graham Hannington ha confutato questa risposta nei commenti sotto la sua risposta, e sia lui che io abbiamo pubblicato vari modi per convertire il codice HTML in markup wiki Confluence. – JoshDM

10

Prova Wikifier.

Non fa esattamente quello che vuoi, ma potresti trovarlo abbastanza o è un utile punto di partenza.

Wikifier converte snippet del formato di archiviazione XML di Confluence 4 (ovvero, come presentato dal plugin Confluence Source Editor, senza un singolo elemento root del documento) nel markup wiki di Confluence 3.

Perché questo è pertinente alla tua domanda? Il formato di archiviazione XML di Confluence 4 include alcuni elementi e attributi che hanno lo stesso nome degli elementi e degli attributi XHTML.

Per ulteriori informazioni, fare clic sul collegamento Guida nella pagina Web di Wikifier.

Nota: il foglio di stile XSLT utilizzato dalla pagina Web di Wikifier è leggermente più recente del foglio di stile XSLT in bundle con il pacchetto dello schema correlato.

Questo aggiunto in seguito: è ancora più vicino a ciò che si desidera.

+3

@Christian Koch: il formato di archiviazione di Confluence 4 non è XHTML. Piuttosto, il formato di archiviazione XML di Confluence 4 include elementi che hanno lo stesso nome di alcuni discendenti dell'elemento del corpo XHTML (e alcuni dei loro attributi). Atlassian si riferiva al formato di archiviazione di Confluence 4 come XHTML, ma ultimamente (con alcuni suggerimenti) si riferiva ad esso come "basato su XHTML". Alla domanda "Quale sottoinsieme di XHTML supporta la confluenza?" (2012-04-12), Atlassian ha risposto "questa pagina è già completa - Probabilmente tutti i tag che non vedi già documentati in questa pagina verranno rimossi" –

+0

Ho provato Wikifier RT ed è perfetto. Grazie. – raisercostin

4

Ecco come farlo in Mylyn utilizzando WikiText Standalone. Sostituire l'appropriato DocumentBuilder per il markup Wiki desiderato (sarà necessario controllare l'API per vedere cosa è disponibile; esiste anche TextileDocumentBuilder).

File 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)); 
    } 
} 

File filename.html:

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

Produce uscita Confluence:

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

Ho scaricato il jar tramite Maven ma non ho trovato il file HTMLParser. Potresti per favore aiutare – Tarun

1

sono stato in grado di raggiungere a HTML contro WikiMarkup in stile fluente con lo DefaultWysiwygConverter dalle librerie Java di Atlassian. Ecco una prova di unità semplificata:

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); 

Il POM deve includere i repository corrette e le dipendenze

<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

Penso che questa sia l'opzione migliore. Utilizza direttamente il parser di Atlassian. Alcune persone, [nei forum atlassian] (https://community.atlassian.com/t5/Jira-questions/How-to-convert-html-to-Atlassian-markup-in-java-app/qaq-p/ 657726), stanno avendo problemi a correggere correttamente le dipendenze, quindi sto fornendo questo esempio con un POM funzionante su [github] (https://github.com/paul-nelson-baker/html-to-jira-markup). –