2012-12-18 77 views
0

所以,我使用jsoup,當我顯示內容返回我得到:使用Jsoup(在Java HTML解析器)與Handlebarsjs

{{#ifcond="" pagetitle="" this.name}} 

我這樣做像local.htmlObj.Body().Html()

當我需要的是像返回:

{{#ifCond PAGETITLE this.NAME}} 

這裏我在做什麼

<cfset paths = [] /> 
<cfset paths[1] = expandPath("/javaloader/lib/jsoup-1.7.1.jar") /> 
<cfset loader = createObject("component", "javaloader.JavaLoader").init(paths) /> 
<cfset obj  = loader.create("org.jsoup.Jsoup") /> 

<cfset local.htmlObj = local.jsoupObj.parse(local.template) /> 

<cfloop array="#local.htmlObj.select('.sidebar_left')#" index="element"> 
     <cfif element.attr('section') EQ "test"> 
      <cfset element.append('HTML HERE') /> 
     </cfif> 
</cfloop> 

local.template是我的模板,它由大量不同的車把文件組成,它們爲不同的地方提供動力。我正在構建一個返回的句柄文件。

+1

你的問題是什麼? – Henrik

+0

如何讓它返回像「{{#ifCond PAGETITLE this.NAME}}}」的句柄腳本。我以這種方式傳遞它,但我得到「{{#ifcond =」「pagetitle =」「this.name}}」作爲回報 – rickitup

+1

JSoup預計HTML。您的Handlebars代碼不是HTML(它是輸出HTML的模板語言)。你可以做你想要純粹用Handlebars來實現的東西。如果沒有,請在HTML _after_ Handlebars輸出它時使用JSoup。 –

回答

2

問題是JSoup試圖解析無效的HTML之前,它允許您訪問它。

<p> 
<table>[...]</table> 
</p> 

它將返回:輕微容易理解的例子的這種行爲,如果你取下面的HTML(在此question看到)可以看出

<p></p> 
<table>[...]</table> 

在你的情況Handelbars代碼看作是有效html中的屬性總是有一個值(想想checked="checked")。據我所知,無法禁用此行爲。這是你嘗試做的工作的錯誤工具。更簡潔的方法是將文檔作爲流獲取並保存爲字符串。

+0

我很感謝您花時間幫助我解決這個問題。再次感謝 – rickitup

+0

不客氣,祝您找到一個可行的解決方案 –