【问题标题】:Unexpected result in jSoup select() with ColdFusion使用 ColdFusion 在 jSoup select() 中出现意外结果
【发布时间】:2013-05-02 11:39:56
【问题描述】:

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

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

<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 加载器,它工作正常。 document.filecontent 是一段 HTML 代码,可以正常工作。

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

这里可能出了什么问题?

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

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

非常感谢您的帮助。

非常感谢, 迈克尔。

更新:

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

转储parsed.select("title")我明白了:

【问题讨论】:

  • 转储“已解析”时会得到什么?另外,如果您转储选择的结果而不对其执行“第一”操作?
  • @Marcin 感谢您的快速回复。请参阅我上面的编辑以及更多屏幕截图。我正在使用Railo。 jSoup 过去运行良好,所以我显然做错了什么。
  • Hmm.. 看起来 select 的结果是作为数组处理的,而不是像 Java JSoup 中的“元素”。如果您使用 select(...)[1] 而不是 .first() 会起作用吗?
  • @Marcin 执行 select('title')[1] 产生与 select('title').first() 相同的结果
  • 很奇怪,从 parsed.select 的转储中,它显然是一个 Element 数组 - 不明白它为什么会发生变化(但我也使用 ACF 而不是 Railo,所以它可能是 Railo 的一些怪癖?)如果您尝试获取文本而不是转储元素?例如。 parsed.select('title').first().text()?

标签: java coldfusion jsoup railo cfml


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-08-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2013-09-16
    • 1970-01-01
    • 2011-08-07
    相关资源
    最近更新 更多