Как преобразовать HTML-код в разметку Wiki в стиле слияния?

документация API для Mylyn Wikitext имеет функции для преобразования разметки Wiki в HTML, но я не могу найти функции для преобразования / анализа HTML-кода в разметку Wiki. Класс!--0--> имеет способ parseToHTML, но где я могу найти обратное?

5 ответов


может быть, эта ссылка может помочь:

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


попробовать Wikifier.

Он не делает именно то, что вы хотите, но вы можете найти, что он делает достаточно, или является полезной отправной точкой.

Wikifier преобразует фрагменты формата хранения XML Confluence 4 (то есть, как представлено плагином редактора источника Confluence, без одного корневого элемента документа) в разметку Вики Confluence 3.

Почему это вообще относится к вашему вопросу? Формат хранения XML Confluence 4 включает некоторые элементы и атрибуты, которые имеют те же имена, что и элементы и атрибуты XHTML.

для получения дополнительной информации щелкните ссылку справка на веб-странице Wikifier.

Примечание: шаблон XSLT, используемого на веб-странице Wikifier немного более поздней, чем шаблон XSLT в комплекте с пакетом, связанные схемы.

позже добавлено: Wikifier RT еще ближе к тому, что вы хотите.


вот как вы это делаете в Mylyn, используя Отдельного Тегами. Заменить соответствующим DocumentBuilder для желаемой разметки Вики (вам нужно будет проверить API, чтобы увидеть, что доступно;TextileDocumentBuilder также существует).

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));
    }
}
имя файла.HTML-код:
<HTML>
<BODY>
<p>This is <b>bold text</b> and some <i>italic text</i>.<br/><br/>TEST!</p>
</BODY>
</HTML>

выдает результат слияния:

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

я смог достичь HTML в стиле слияния WikiMarkup с помощью DefaultWysiwygConverter из собственных библиотек Java Atlassian. Вот упрощенный модульный тест:

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 должен включать правильные репозитории и зависимости

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

насколько я знаю, нет способа конвертировать HTML в разметку слияния wiki. И поскольку Atlassian перестает использовать текстиль в качестве разметки wiki в Confluence 4.x нет необходимости в преобразовании. Формат страницы ist XHTML.