La documentazione API per Mylyn Wikitext ha funzioni per convertire Wiki Markup in HTML, ma non riesco a trovare funzioni per convertire/analizzare codice HTML in Wiki Markup. La classe MarkupParser
ha il metodo parseToHTML
, ma dove posso trovare il contrario?Come posso convertire il codice HTML in Wiki Markup in stile confluenza?
risposta
può essere questo link può aiutare:
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.
@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
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.
@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" –
Ho provato Wikifier RT ed è perfetto. Grazie. – raisercostin
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!
Ho scaricato il jar tramite Maven ma non ho trovato il file HTMLParser. Potresti per favore aiutare – Tarun
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>
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). –
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. –
@Vinay Bedre - guarda la mia risposta alla tua domanda; È possibile utilizzare la libreria Mylyn per eseguire la conversione. – JoshDM