2013-05-08 47 views
2

出于某种原因,我总是从调用jSoup对象的select()获得奇怪的结果。jSoup在ColdFusion中选择()的意外结果

这里是我的代码(我试图让简单的标题和meta标签值,并将其插入到我的所谓的“请求”对象):

<cfset jsoupObject = createObject("component","lib.javaloader.JavaLoader").init([ expandPath('/lib/jsoup-1.7.2.jar') ]) /> 
<cfset jsoupCreate = jsoupObject.create("org.jsoup.Jsoup") />   
<cfset parsed = jsoupCreate.parse(document.filecontent) /> 

<cfset variables.request = {} /> 
<cfset variables.request.title = parsed.select("title").first() /> 
<cfset variables.request.description = parsed.select("meta[name=description]").first() /> 

因为我有这样一个CFC,我使用一个Java Loader,它工作正常。 document.filecontent是一段HTML代码,工作正常。

当我输出我的请求对象,我得到以下结果:

enter image description here

可能是错误怎么回事?

您可以忽略请求对象的其他按键,唯一要注意的是这里描述标题,这既给我怪异的结果!

我正在通过CFHTTP在一些代码之前加载我的HTML(所有工作正常)。

我真的很感谢你的帮助。

非常感谢, Michael。

UPDATE:

倾销 '解析' 我得到以下几点:

enter image description here

倾销parsed.select("title")我得到:

enter image description here

+0

当您转储“已分析”时,您会得到什么?另外,如果你转储选择的结果而不做“第一”呢? – Marcin 2013-05-08 10:01:34

+0

@Marcin感谢您的快速回复。看到我的编辑上面进一步的截图。我正在使用Railo。 jSoup在过去工作得很好,所以我显然做错了什么。 – 2013-05-08 10:05:47

+0

嗯..它看起来像选择的结果正在作为一个数组处理,而不是像在Java JSoup中的“元素”。如果你选择(...)[1]而不是.first(),它会起作用吗? – Marcin 2013-05-08 10:13:51

回答

4

要存储的实际元素而不是内容o f标签,这是我以为你打算的。即使你希望它作为Java对象转储,可能会有一些怪癖阻止它。您可能想要存储实际文本,而不是倾销元素,例如:

<cfset variables.request.title = parsed.select("title").first().text() />