Xerces ведет себя по-разному в SUN JRE v1.5 и IBM J9 v1.5 - PullRequest
1 голос
/ 21 декабря 2010

Я пытаюсь проанализировать 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
}

Работая нормально, я имею в виду, что получаю список«тд» элементов, которые я могу обработать дальше.В случае 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 Ответ

1 голос
/ 21 декабря 2010

У меня есть 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. Этот префикс может вызвать сбой синтаксического анализатора.
...