Xerces在Sun JRE V1.5和IBM J9 V1.5上的行为不同
题
我正在尝试使用一些HTML使用 Nekohtml.
问题是,当以下代码段在 SUN JDK 1.5.0_01
它可以正常工作(这是我与Sun Jre一起使用Eclipse的时候。但是当执行同一件事时 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
值得赞赏的任何想法,建议或解决方法。谢谢。
解决方案
我有两个想法。
- 我刚刚验证了Xerces是JRE安装的一部分,因此我相信它从那里到达了您的应用程序的类路径。 Sun和IBM可能会为您带来不同版本的Xerces。因此,作为第一种方法,请检查它,并可能尝试将IBM下的内容替换为太阳版本。如果它可以帮助您有2个选项:继续使用Sun Xerces运行IBM Java,或者继续研究IBM的Xerces出了什么问题。
- 开发环境和生产环境之间还有其他差异吗?这些是相同的操作系统吗?您是否有机会(例如)使用Windows进行开发和UNIX进行生产,但是您的XML是在Windows上写入 r n作为新产品线的?甚至更多:如果您的XML包含Unicode字符并在Windows中编写,则可以包含特殊(无形的)前缀,该前缀表明这是Unicode。该前缀可能导致解析器失败。
不隶属于 StackOverflow