2012-05-07 5 views

답변

3

이 링크가 도움이 될 수있다

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

+0

당신의 답장을 보내 주셔서 감사합니다를 포함해야

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

: 여기에 간단한 단위 테스트입니다. 하지만 내가 원하는 것은 HTML 파일 내용을 입력으로 받아서 Wiki 마크 업 텍스트를 제공하는 자바 API이다. –

+0

@Vinay Bedre - 내 질문에 대한 답변보기. Mylyn 라이브러리를 사용하여 변환을 수행 할 수 있습니다. – JoshDM

-1

은 내가 아는 합류 위키 마크 업을 HTML로 변환하는 방법은 없습니다. Atlassian은 Confluence 4.x에서 wiki 마크 업으로 텍스타일을 사용하지 않기 때문에 변환 할 필요가 없습니다. 페이지 형식은 ist XHTML입니다.

+2

@Graham Hannington이 그의 대답 아래의 댓글에이 답변을 반증했습니다. 그와 저는 HTML을 Confluence wiki 마크 업으로 변환하는 방법을 게시했습니다. – JoshDM

10

시도 Wikifier.

원하는대로 정확하게 수행되지는 않지만 충분하거나 도움이되는 시작점입니다.

위키 피 디아는 Confluence 4 XML 저장 형식 (즉, 단일 문서 루트 요소가없는 Confluence Source Editor 플러그인에 의해 제공됨)의 조각을 Confluence 3 위키 마크 업으로 변환합니다.

왜이 질문과 관련이 있습니까? Confluence 4 XML 스토리지 포맷은 XHTML 요소 및 속성과 이름이 같은 일부 요소 및 속성을 포함합니다.

자세한 내용을 보려면 위키피디아 웹 페이지에서 도움말 링크를 클릭하십시오.

참고 : Wikifier 웹 페이지에서 사용되는 XSLT 스타일 시트는 관련 스키마 패키지와 함께 번들로 제공되는 XSLT 스타일 시트보다 약간 더 최근의 것입니다.

나중에 추가 할 내용 : Wikifier RT은 원하는 내용에 더 가깝습니다.

+3

@Christian Koch : Confluence 4 저장 형식은 XHTML이 아닙니다. 대신 Confluence 4 XML 저장 형식에는 XHTML 본문 요소의 일부 자손 (및 일부 속성)과 동일한 이름을 가진 요소가 포함됩니다. Atlassian은 Confluence 4 스토리지 포맷을 XHTML로 지칭하곤 했었지만 최근에는 (일부 프롬프트와 함께) "XHTML 기반"으로 언급했습니다. "Confluence는 어떤 XHTML 하위 세트를 지원합니까?" (2012-04-12), Atlassian은 "이 페이지는 이미 포괄적입니다 -이 페이지에 아직 문서화되지 않은 태그는 제거 될 것입니다" –

+0

Wikifier RT를 시도한 결과 완벽했습니다. 고맙습니다. – raisercostin

4

다음은 WikiText Standalone을 사용하여 Mylyn에서 수행하는 방법입니다. 적절한 DocumentBuilder을 원하는 Wiki 마크 업으로 대체하십시오 (사용할 수있는 것을 확인하려면 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)); 
    } 
} 

파일 filename.html : 나는이에 HTML을 달성 할 수 있었다

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

Maven을 통해 jar 파일을 다운로드했지만 HTMLParser 파일을 찾을 수 없습니다. 도와 주 시겠어요 – Tarun

1

:

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

이 합류 출력을 생성합니다 범죄자 Atlassian의 자체 Java 라이브러리에서 DefaultWysiwygConverter을 사용하는 fluence-style WikiMarkup. 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> 
+1

이것이 최선의 선택이라고 생각합니다. Atlassian의 파서를 직접 사용합니다. 어떤 사람들, [atlassian forums] (https://community.atlassian.com/t5/Jira-questions/How-to-convert-html-to-Atlassian-markup-in-java-app/qaq-p/) 657726), 의존성 문제를 해결하는 데 문제가 있으므로이 예제에 [github] (https://github.com/paul-nelson-baker/html-to-jira-markup)의 작업 POM을 제공합니다. –