Неожиданный результат в jSoup select() с ColdFusion

По какой-то причине я всегда получаю странный результат от моих 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, который отлично работает. document.filecontent — это блок HTML-кода, который отлично работает.

Когда я вывожу свой объект запроса, я получаю следующие результаты:

введите здесь описание изображения

Что здесь может быть не так?

Вы можете игнорировать другие ключи в объекте запроса, здесь следует отметить только description и title, которые дают мне странные результаты!

Я загружаю свой HTML через CFHTTP в каком-то коде до этого (все работает нормально).

Я был бы очень признателен за вашу помощь.

Большое спасибо, Майкл.

ОБНОВЛЕНИЕ:

Сбрасывая 'parsed', я получаю следующее:

введите здесь описание изображения

Сбрасывая parsed.select("title"), я получаю:

введите здесь описание изображения


person Michael Giovanni Pumo    schedule 08.05.2013    source источник
comment
Что вы получаете, когда анализируете дамп? Также, если вы сбрасываете результат выбора, не выполняя его сначала?   -  person Marcin    schedule 08.05.2013
comment
@Marcin Спасибо за быстрый ответ. См. мое редактирование выше с дополнительными скриншотами. Я использую Рейло. jSoup работал нормально в прошлом, поэтому я явно делаю что-то не так.   -  person Michael Giovanni Pumo    schedule 08.05.2013
comment
Хм... Похоже, результат выбора обрабатывается как массив, а не как элементы, как в Java JSoup. Будет ли это работать, если вы выберете select(...)[1] вместо .first()?   -  person Marcin    schedule 08.05.2013
comment
@Marcin Выполнение select('title')[1] дает тот же результат, что и select('title').first()   -  person Michael Giovanni Pumo    schedule 08.05.2013
comment
Странно, из дампа parsed.select это явно массив элементов - не понимаю, почему он меняется (но я также использую ACF, а не Railo, так что это может быть какая-то причуда Railo?) Что, если вы попытаетесь получить текст вместо сброс элемента? например. parsed.select('title').first().text()?   -  person Marcin    schedule 08.05.2013
comment
Ладно, ЭТО работает... Я чертов идиот. Конечно, я сохранял объект/совпадение и ожидал текст... Я забыл об этом. О, мое слово. Поместите это как ответ, и я отмечу вас как правильный! Большое спасибо за вашу быструю помощь :)   -  person Michael Giovanni Pumo    schedule 08.05.2013
comment
@Marcin Хорошо, ЭТО работает ... Я чертов идиот. Конечно, я сохранял объект/совпадение и ожидал текст... Я забыл об этом. О, мое слово. Поместите это как ответ, и я отмечу вас как правильный! Большое спасибо за вашу быструю помощь :)   -  person Michael Giovanni Pumo    schedule 08.05.2013
comment
давайте продолжим это обсуждение в чате   -  person Marcin    schedule 08.05.2013


Ответы (1)


Вы сохраняете фактический элемент, а не содержимое тега, что, я полагаю, вы и намеревались сделать. Даже если вы ожидаете, что он будет выгружен как объект Java, может быть какая-то причуда, которая останавливает это. Вы, вероятно, захотите сохранить фактический текст вместо дампа элемента, например:

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