Xerces si comportano in modo diverso su SUN JRE v1.5 e IBM J9 v1.5
Domanda
Sto cercando di analizzare il linguaggio HTML usando NekoHTML .
Il problema è che quando il frammento di codice di seguito viene eseguito sul SUN JDK 1.5.0_01
funziona benissimo (questo è quando io sto usando Eclipse con Sun JRE). Ma quando la stessa cosa viene eseguito su IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323 (JIT enabled)
allora non funziona (questo è quando io sto usando IBM RAD per lo sviluppo).
NodeList tags = doc.getElementsByTagName("td");
for (int i = 0; i < tags.getLength(); i++)
{
Element elem = (Element) tags.item(i);
// do something with elem
}
Per funzionare bene voglio dire che sto ottenendo una lista di elementi "TD", che posso elaborare ulteriormente. Nel caso del J9 non sto entrando il ciclo for
.
Sto usando la versione più recente di NekoHTML (insieme con i vasi xerces in bundle). Il doc
nel codice sopra è di tipo org.w3.dom.Document
(classe runtime utilizzata è org.apache.html.dom.HTMLDocumentImpl
)
I dettagli IBM J9 sono i seguenti:
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
Qualsiasi idea, suggerimento o soluzione è apprezzato. Grazie.
Soluzione
Ho 2 idee.
- Ho appena verificato che xerces è una parte dell'installazione di JRE, quindi credo che arriva al classpath dell'applicazione da lì. Probabilmente SUN e IBM si mettono diverse versioni di xerces. Così, come un primo approccio controllare e probabilmente provare a sostituire quello che hai sotto IBM alla versione del Sole. Se aiuta avete 2 opzioni: continuare l'esecuzione IBM Java con xerces da Sun o continuare a indagare su ciò che c'è di sbagliato con xerces da IBM .
- Ci sono altre differenze tra il dev e ambienti di produzione? Sono questi gli stessi sistemi operativi? È una possibilità che si sta utilizzando (per esempio) le finestre per lo sviluppo e UNIX per la produzione, ma il vostro XML è scritto su Windows con \ r \ n come una nuova linea? O anche di più: se il XML contiene caratteri Unicode e scritto in Windows Può contenere speciale (invisibile) prefisso che indica che si tratta unicode. Questo prefisso può causare parser al sicuro.