1

我正在尝试使用NekoHTML解析一些 HTML 。

问题是当下面的代码片段在它上面执行时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
}

通过正常工作,我的意思是我得到了一个可以进一步处理的“td”元素列表。在 J9 的情况下,我没有进入for循环。

我正在使用最新版本的 NekoHTML(以及捆绑的 Xerces jars)。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

感谢任何想法、建议或解决方法。谢谢。

4

1 回答 1

1

我有2个想法。

  1. 我刚刚验证了 xerces 是 JRE 安装的一部分,所以我相信它会从那里到达您的应用程序的类路径。可能 SUN 和 IBM 为您带来了不同版本的 xerces。因此,作为第一种方法,检查它并可能尝试将您在 IBM 下的内容替换为 SUN 的版本。如果它可以帮助您有两个选择:继续使用 SUN 的 xerces 运行 IBM java,或者继续调查 IBM 的 xerces 出了什么问题。
  2. 您的开发环境和生产环境之间还有其他区别吗?这些是相同的操作系统吗?您是否有机会使用(例如)windows 进行开发,使用 unix 进行生产,但是您的 xml 是在 Windows 上以 \r\n 作为新行编写的?甚至更多:如果您的 XML 包含 unicode 字符并写在 windows 中,它可以包含特殊(不可见)前缀,表明这是 unicode。此前缀可能会导致解析器失败。
于 2010-12-21T10:24:24.717 回答