Вопрос

Я пытаюсь проанализировать несколько HTML, используя Nekohtml.

Проблема в том, что когда приведенный ниже кодовый фрагмент выполняется на SUN JDK 1.5.0_01 Это работает нормально (это когда я использую Eclipse с Sun Jre). Но когда то же самое исполняется на IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323 (JIT enabled) Тогда это не работает (это когда я использую IBM RAD для разработки).

NodeList tags = doc.getElementsByTagName("td"); 

for (int i = 0; i < tags.getLength(); i++) 
{
 Element elem = (Element) tags.item(i);
 // do something with elem
}

Работая нормально, я имею в виду, что я получаю список элементов «TD», которые я могу обработать дальше. В случае J9 я не вхожу в for петля.

Я использую последнюю версию Nekohtml (вместе с комплексными банками Xerces). А doc В приведенном выше коде тип org.w3.dom.Document (Используемый класс времени выполнения org.apache.html.dom.HTMLDocumentImpl)

Детали IBM J9 следующие:

java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build pwi32devifx-20070323 (ifix 117674: SR4 + 116644 + 114941 + 116110 + 114881))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323 (JIT enabled)
J9VM - 20070322_12058_lHdSMR
JIT  - 20070109_1805ifx3_r8
GC   - WASIFIX_2007)
JCL  - 20070131

Любая идея, предложение или обходной путь ценится. Спасибо.

Это было полезно?

Решение

У меня есть 2 идеи.

  1. Я только что подтвердил, что Xerces является частью установки JRE, поэтому я полагаю, что он прибывает в путь вашего приложения оттуда. Наверное, Sun и IBM приносят вам разные версии Xerces. Итак, в качестве первого подхода проверьте это и, вероятно, попытайтесь заменить то, что у вас есть под IBM на версию Sun. Если это поможет вам иметь 2 варианта: продолжайте запускать IBM Java с Xerces от Sun или продолжать исследовать, что не так с Xerces от IBM.
  2. Есть ли другие различия между вашим разработчиком и производственной средой? Это те же операционные системы? Это шанс, что вы используете (например) Windows для разработки и UNIX для производства, но ваш XML написан в Windows с r n в качестве новой линии? Или даже больше: если ваш XML содержит символы Unicode и записанный в Windows, он может содержать специальный (невидимый) префикс, который указывает, что это Unicode. Этот префикс может привести к провалу анализатора.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top