2

出于某种原因,我select()对 jSoup 对象的调用总是得到一个奇怪的结果。

这是我的代码(我正在尝试获取简单的标题和元标记值并将它们插入到我的名为“请求”的对象中):

<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 代码,可以正常工作。

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

在此处输入图像描述

这里可能出了什么问题?

你可以忽略 request 对象中的其他键,这里唯一需要注意的是descriptiontitle,它们都给了我奇怪的结果!

在此之前,我正在通过CFHTTP一些代码加载我的 HTML(一切正常)。

我真的很感谢你的帮助。

非常感谢,迈克尔。

更新:

转储“解析”我得到以下信息:

在此处输入图像描述

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

在此处输入图像描述

4

1 回答 1

4

您存储的是实际元素而不是标签的内容,这是我假设您的意图。即使您希望它作为 Java 对象转储,也可能有一些怪癖会阻止它。您可能希望存储实际文本而不是转储元素,例如:

<cfset variables.request.title = parsed.select("title").first().text() />
于 2013-05-08T10:35:56.963 回答