Dokumentacja API dla Mylyn Wikitext ma funkcje konwersji Wiki Markup na HTML, ale nie mogę znaleźć funkcji do konwersji/parsowania kodu HTML na Wiki Markup. Klasa MarkupParser
ma metodę parseToHTML
, ale gdzie mogę znaleźć odwrotność?Jak przekonwertować kod HTML na marżę w stylu Confluence?
Odpowiedz
Może ten link pomoże:
O ile wiem, nie ma sposobu, aby przekonwertować HTML do zbieżnym wiki znaczników. A ponieważ Atlassian przestaje używać tekstyliów jako znaczników Wiki w Confluence 4.x, nie ma potrzeby konwersji. Format strony ist XHTML.
@Graham Hannington obalił tę odpowiedź w komentarzach poniżej swojej odpowiedzi, a zarówno on, jak i ja napisaliśmy sposoby konwertowania znaczników HTML na Confluence. – JoshDM
Wypróbuj .
Nie robi dokładnie tego, czego oczekujesz, ale może się okazać, że działa wystarczająco lub jest przydatnym punktem początkowym.
Wikifier konwertuje fragmenty formatu Confluence 4 XML (czyli prezentowanego przez wtyczkę Confluence Source Editor, bez pojedynczego elementu głównego dokumentu) do marży Wiki Confluence 3.
Dlaczego to w ogóle dotyczy Twojego pytania? Format przechowywania Confluence 4 XML zawiera niektóre elementy i atrybuty, które mają takie same nazwy jak elementy i atrybuty XHTML.
Aby uzyskać więcej informacji, kliknij link Pomoc na stronie WikiFier.
Uwaga: Arkusz stylów XSLT używany przez stronę WWW WikiFier jest nieco nowszy niż arkusz stylów XSLT w pakiecie z powiązanym pakietem schematu.
Dodana później: Wikifier RT jest jeszcze bliższa temu, co chcesz.
@ Chrześcijański Koch: format przechowywania Confluence 4 nie jest XHTML. Zamiast tego, format zapisu Confluence 4 XML zawiera elementy, które mają takie same nazwy jak niektóre elementy potomne elementu treści XHTML (i niektóre z ich atrybutów). Atlassian odwoływał się do formatu przechowywania Confluence 4 jako XHTML, ale ostatnio (z pewnym podpowiadaniem) odnosił się do niego jako "oparty na XHTML". Na pytanie "Jaki podzbiór XHTML obsługuje Confluence?" (2012-04-12), Atlassian odpowiedział "ta strona jest już wyczerpująca - wszelkie tagi, których jeszcze nie widzisz, udokumentowane na tej stronie, prawdopodobnie zostaną usunięte" –
Próbowałem Wikifier RT i jest doskonały. Dziękuję Ci. – raisercostin
Oto jak to zrobić w Mylyn przy użyciu WikiText Standalone. Zastąp odpowiednie DocumentBuilder
dla potrzebnego znacznika Wiki (musisz sprawdzić API, aby zobaczyć, co jest dostępne, istnieje również TextileDocumentBuilder
).
pliku 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));
}
}
pliku nazwapliku.html:
<HTML>
<BODY>
<p>This is <b>bold text</b> and some <i>italic text</i>.<br/><br/>TEST!</p>
</BODY>
</HTML>
Produkuje wyjście Confluence:
This is *bold text* and some _italic text_.
\\TEST!
Pobrałem słoik za pośrednictwem Mavena, ale nie mogłem zlokalizować pliku HTMLParser. Czy mógłbyś pomóc – Tarun
udało mi się osiągnąć HTML Kon w stylu Fluent WikiMarkup przy użyciu DefaultWysiwygConverter
z własnych bibliotek Java Atlassiana. Oto uproszczony testów jednostkowych:
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);
POM musi zawierać poprawne repozytoria i zależności
<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>
Myślę, że to najlepsza opcja. Używa bezpośrednio parsera Atlassiana. Niektórzy ludzie [na forach atlasowych] (https://community.atlassian.com/t5/Jira-questions/How-to-convert-html-to-Atlassian-markup-in-java-app/qaq-p/ 657726), mają problemy z uzyskaniem poprawnych zależności, więc dostarczam ten przykład działającego POM na [github] (https://github.com/paul-nelson-baker/html-to-jira-markup). –
Dzięki za odpowiedź. Ale potrzebuję interfejsu API języka Java, który pobierze zawartość pliku HTML i udostępni tekst znaczników Wiki. –
@Vayay Bedre - zobacz moją odpowiedź na twoje pytanie; Możesz użyć biblioteki Mylyn, aby wykonać konwersję. – JoshDM