2013-02-12 33 views
1

我在重構Java EE項目以使用MarkLogic,並希望利用MarkLogic的內置HTML整理功能。是否可以使用MarkLogic Java API中的HTML Tidy?或者我需要使用第三方API,它可以讓我直接運行XQuery命令?使用MarkLogic的Java API訪問HTML整潔

或者這是一個傻瓜的差事,我應該只在我的代碼中使用HTML Tidy?

+0

... NoSQL產品,Tidy和XQuery到底有什麼共同之處?他們似乎與我完全無關。 – millimoose 2013-02-12 18:34:13

+1

您可以通過'xdmp:tidy'命令在MarkLogic上從XQuery運行HTML Tidy。鑑於我們在那裏存儲HTML文件,我的主管建議我們也許可以利用這種內置功能,但我不確定我們是否可以。 – BlairHippo 2013-02-12 18:37:02

回答

3

請參閱隨Java API分發的com.marklogic.client.example.cookbook.DocumentWriteTransform示例,該示例在文檔寫入時使用server-side XQuery轉換來調用xdmp:tidy()

+1

你能解釋一下這個嗎?我查看了Javadoc和該文件的源代碼,並且我也沒有看到任何對xdmp:tidy的引用。 – BlairHippo 2013-02-12 21:31:01

+0

在MarkLogic-Java-API-1.0-2.zip中,請看example/scripts/html2xhtml.xqy和example/com/marklogic/client/example/cookbook/DocumentWriteTransform.java – ehennum 2013-02-13 17:08:55

+0

非常好,謝謝;這正是我正在尋找的那種樣本。 – BlairHippo 2013-02-13 17:44:47

2

引用的示例Erik安裝了XQuery轉換。它的名字是html2xthml.xqy - 它被打包在發行版的某個地方。這個例子有一個安裝轉換的方法,然後是一個如何調用它的例子。調用部分在126行。

writeMgr.write(docId,writeHandle,transform);

在上面你會看到如何創建和配置變換。

這個想法是,您可以使用REST(通過Java API)在/ v1/transforms/html2xhtml上安裝變換,然後在文檔PUT(使用此Java編寫方法)期間以變換名稱作爲參數調用它。

所以你要找的引用是在XQuery轉換中,而不是Java源文件。

+0

我下載了MarkLogic-Java-API-1.0-2.zip,並且在其中的任何位置都找不到html2xthml.xqy。這是你想要的發行版嗎? – BlairHippo 2013-02-13 16:43:42

0

只要您打算在圖片中保留Java,我就會傾向於在Java層保持整潔。在JVM中運行整潔可以提供更多控制:您可以安裝任何版本的jtidy,甚至可以自行修補它。同樣整潔可能相當CPU密集型,所以在JVM層中運行它會阻止它與數據庫查詢競爭。

當然,您可能還有其他強烈的動機來在MarkLogic中運行整潔。例如,您可能計劃允許直接與您的MarkLogic代碼進行REST集成。