我正在尝试使用一些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

值得赞赏的任何想法,建议或解决方法。谢谢。

有帮助吗?

解决方案

我有两个想法。

  1. 我刚刚验证了Xerces是JRE安装的一部分,因此我相信它从那里到达了您的应用程序的类路径。 Sun和IBM可能会为您带来不同版本的Xerces。因此,作为第一种方法,请检查它,并可能尝试将IBM下的内容替换为太阳版本。如果它可以帮助您有2个选项:继续使用Sun Xerces运行IBM Java,或者继续研究IBM的Xerces出了什么问题。
  2. 开发环境和生产环境之间还有其他差异吗?这些是相同的操作系统吗?您是否有机会(例如)使用Windows进行开发和UNIX进行生产,但是您的XML是在Windows上写入 r n作为新产品线的?甚至更多:如果您的XML包含Unicode字符并在Windows中编写,则可以包含特殊(无形的)前缀,该前缀表明这是Unicode。该前缀可能导致解析器失败。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top