Нокогири усекает ввод XML

У меня возникли проблемы с компьютером коллеги, усекающим XML при использовании Nokogiri для анализа канала Media RSS. Лента представляет собой стандартную медиа-ленту RSS, а XML не имеет искажений. Похоже, что он просто останавливается в определенной точке XML и закрывает все теги, которые были бы открыты в этой текущей точке документа. (К сожалению, сейчас у меня нет XML-файла, но я обновлю этот вопрос, указав фактический XML, когда он будет доступен для меня).

Меня смущает то, что он отлично работает на моей машине (OSX 10.6, Nokogiri 1.4.4), в то время как на его машине он работает правильно, используя ту же настройку, однако его машина на несколько лет старше. Я предполагаю, что где-то есть разница, но, к сожалению, я не знаю, что искать.

Любые мысли или направления были бы очень признательны.

XML-образец

Это элемент, в котором Nokogiri усекает поток XML.

Примечание. Я заменил некоторые значения в фиде, чтобы они не идентифицировали.

<item>
<title>Naruto Season 7 - Episode 167 - When Egrets Flap Their Wings</title>
<link>http://www.test.com/redirect?url=%2Fnaruto-original%2Fepisode-167-when-egrets-flap-their-wings-526666&aff=0000000</link>
<guid isPermalink="true">http://www.test.com/media-526666</guid>
<description><img src="http://img1.lln.test.com/i/spire3-tmb/9730631d41af0f46cb556642ca1f32231240438469_thumb.jpg"  /><br />At Moso's mansion, a battle takes place between the Wandering Ninja and a Leaf Ninja. With Chishima's help, Naruto is freed from Moso's genjutsu. Moso then reveals his true form as the leader of the Wandering ninja, Hoki!</description>
<enclosure url="http://img1.lln.test.com/i/spire3-tmb/9730631d41af0f46cb556642ca1f32231240438469_thumb.jpg" type="image/jpeg" length="6592"/>
<category>Anime</category>
<media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat" label="Anime">Movies_Anime_animation</media:category>
<pubDate>Wed, 22 Apr 2009 21:39:34 GMT</pubDate>
<test:freePubDate>Tue, 19 Jan 2038 00:27:28 GMT</test:freePubDate>
<test:premiumPubDate>Wed, 22 Apr 2009 21:39:34 GMT</test:premiumPubDate>
<test:episodeNumber>167</test:episodeNumber>
<test:duration>1414</test:duration>
<test:publisher>TV TOKYO</test:publisher>
<media:content url="https://www.test.com/syndication/video?id=1444659&affiliate_code=0000000" type="video/mp4" medium="video" duration="1414"/>
<media:restriction relationship="allow" type="country">us ca as um pr gu vi</media:restriction>
<media:credit role="distribution company">Test Inc.</media:credit>
<media:rating scheme="urn:simple">nonadult</media:rating>
<media:thumbnail url="http://img1.lln.test.com/i/spire3-tmb/9730631d41af0f46cb556642ca1f32231240438469_full.jpg"/>
<media:keywords>action, adventure, comedy, supernatural, martial, arts, ninja, shounen, super, power, drama, fantasy</media:keywords>
</item>

person bdorry    schedule 31.01.2011    source источник
comment
Укажите URL-адрес фида или полный фид здесь; без него все бы просто гадали.   -  person Phrogz    schedule 31.01.2011
comment
Я обязательно опубликую образец, когда он будет в наличии.   -  person bdorry    schedule 31.01.2011
comment
Извините за задержку - разместил XML выше.   -  person bdorry    schedule 02.02.2011
comment
Ваш пример xml на самом деле неправильно сформирован, в URL-адресах есть неэкранированные &.   -  person Jörn Horstmann    schedule 04.02.2011


Ответы (1)


Мое предположение основано на различии машин: Nokogiri полагается на libxml2 для большей части своей работы и скорости. Я предполагаю, что на неисправной машине установлена ​​более старая версия libxml2 с ошибками, против которой был построен Nokogiri. Попробуйте удалить Nokogiri, обновить libxml2, а затем переустановить Nokogiri (чтобы он собирался с более новой libxml2).

См. либо Что делать делать, если libxml2 не работает или (если, как и я, вы предпочитаете собирать из исходников, а не использовать fink или macports) Использовать libxml из исходного кода.

person Phrogz    schedule 31.01.2011
comment
Nokogiri довольно хорошо справляется с отловом старых/глючных версий libxml2 и громко жаловался каждый раз при запуске, когда обнаруживал проблему. Можно было переопределить жалобу, но разработчик должен был сделать это явно. Я не помню, был ли это флаг, установленный в ENV, или константа в коде, но проверка обоих должна быть простой задачей. Это было довольно очевидно из-за имени переменной, которую нужно было установить. Теперь Nokogiri отказывается устанавливать версии с ошибками. - person the Tin Man; 31.01.2011
comment
@theTinMan Хорошая информация; моя догадка, кажется, скорее всего неверна. Полагаю, нам придется дождаться образца и попытаться воспроизвести. - person Phrogz; 31.01.2011