Xerces ведет себя по-разному в SUN JRE v1.5 и IBM J9 v1.5

Я пытаюсь разобрать HTML- код с помощью NekoHTML.

Проблема в том, что когда приведенный ниже фрагмент кода выполняется на SUN JDK 1.5.0_01 это работает отлично (это когда я использую затмение с 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

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

1 ответ

Решение

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

  1. Я только что проверил, что xerces является частью установки JRE, поэтому я считаю, что оттуда он попадает в путь к классам вашего приложения. Возможно, SUN и IBM предлагают вам разные версии xerces. Итак, в качестве первого подхода проверьте его и, вероятно, попытайтесь заменить то, что у вас есть под IBM, на версию SUN. Если это поможет, у вас есть 2 варианта: продолжить запуск IBM java с xerces из SUN или продолжить исследовать, что не так с xerces из IBM.
  2. Существуют ли другие различия между вашей средой разработки и производственной средой? Это те же операционные системы? Есть ли вероятность, что вы используете (например) окна для разработки и Unix для производства, но ваш xml написан на Windows с \r\n новой строкой? Или даже больше: если ваш XML содержит символы Unicode и записан в окнах, он может содержать специальный (невидимый) префикс, который указывает, что это Unicode. Этот префикс может вызвать сбой анализатора.
Другие вопросы по тегам