出于某种原因,我总是从对 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 代码,可以正常工作。
当我输出请求对象时,我得到以下结果:
这里可能出了什么问题?
您可以忽略请求对象中的其他键,这里唯一需要注意的是 description 和 title,它们都会给我带来奇怪的结果!
我正在通过 CFHTTP
在此之前的一些代码中加载 HTML(一切正常)。
非常感谢您的帮助。
非常感谢, 迈克尔。
更新:
转储“已解析”我得到以下结果:
转储parsed.select("title")
我得到:
最佳答案
您正在存储实际的元素而不是标签的内容,这就是我认为您的意图。即使您希望它转储为 Java 对象,也可能有一些怪癖阻止了这一点。您可能想存储实际文本而不是转储元素,例如:
<cfset variables.request.title = parsed.select("title").first().text() />
关于java - 使用 ColdFusion 的 jSoup select() 出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16437331/