Android анализирует HTML-сущности с помощью DOM-парсера для RSS-канала - PullRequest
0 голосов
/ 10 января 2011

Я использую API Google Books для приложения Android, которое я создаю. Это образец файла XML

<dc:description>This trilogy includes &amp;quot; The Hitchhiker&amp;#39;s Guide to the Galaxy&amp;quot; , &amp;quot; TheRestaurant at the End of the Universe&amp;quot; , &amp;quot; Life, Universe and Everything&amp;quot; and &amp;quot; So Long ...</dc:description>
<dc:format>590 pages</dc:format>
<dc:format>book</dc:format>

И это часть кода, который я использую для извлечения описания

if ( entry.getElementsByTagName( "dc:description" ).item( 0 ) != null ) {
  Element d = ( Element ) entry.getElementsByTagName( "dc:description" )
      .item( 0 );
  b.setDescription( d.getFirstChild( ).getNodeValue( ) );

}

Проблема в том, что при использовании функции HTML.fromHtml (Str) она обрезает текст в первой сущности HTML (так что в этом примере это просто

Эта трилогия включает в себя

Когда я запускаю тот же код за пределами Android, он работает нормально и, по крайней мере, показывает строку с escape-символами, т.е.

This trilogy includes &quot; The Hitchhiker&#39;s Guide to the Galaxy&quot; , &quot; TheRestaurant at the End of the Universe&quot; , &quot; Life, Universe and Everything&quot; and &quot; So Long ...

Если я затем вручную добавлю это в приложение, HTML.fromHtml () будет работать нормально, поэтому я думаю, что проблема в реализации парсера в Android.

Аналогичная проблема: Android, декодирующий HTML в файле XML . Я попытался установить для фабрики значение false, и поскольку это канал RSS, я не могу объявить корневой элемент HTML (как предлагается в этом посте).

1 Ответ

0 голосов
/ 24 февраля 2011

В итоге я не получил данные описания от Google, но думаю, что проблему можно решить, запустив normalize () для элемента документа - у меня была похожая проблема с другим API, и это исправило ее.

...