在Handlebarsjs中使用Jsoup(Java html解析器)

时间:2012-12-18 17:35:05

标签: coldfusion jsoup handlebars.js

所以,我正在使用jsoup,当我显示返回的内容时,我得到:

{{#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 个答案:

答案 0 :(得分:2)

问题是JSoup在允许您访问之前尝试解析无效的HTML。如果您获取以下HTML(在此question中看到),则可以看到稍微容易理解的此行为示例:

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

它将返回:

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

在你的情况下,Handelbars代码被视为属性,在有效的html中总是有一个值(想想checked="checked")。据我所知,没有办法禁用此行为。这是你正在尝试的工作的错误工具。更简洁的方法是将文档作为流获取并将其保存为字符串。