Xerces 在 SUN JRE v1.5 和 IBM J9 v1.5 上的行为不同

发布于 2024-10-09 05:07:58 字数 1182 浏览 9 评论 0原文

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

问题是,当在 SUN JDK 1.5.0_01 上执行以下代码片段时,它工作正常(这是当我将 eclipse 与 sun jre 一起使用时)。但是,当在 IBM J9 VM(构建 2.3,J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323(启用 JIT))上执行相同的操作时,它不起作用(这是当我正在使用 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 jar)。上面

代码中的 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

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

I am trying to parse some HTML using NekoHTML.

The problem is that when the below code snippet is executed on the SUN JDK 1.5.0_01 it works fine (this is when i am using eclipse with sun jre). But when the same thing is executed on IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323 (JIT enabled) then it is not working (this is when i am using the IBM RAD for development).

NodeList tags = doc.getElementsByTagName("td"); 

for (int i = 0; i < tags.getLength(); i++) 
{
 Element elem = (Element) tags.item(i);
 // do something with elem
}

By working fine I mean that I am getting a list of "td" elements which I can process further. In case of the J9 I am not entering the for loop.

I am using latest version of NekoHTML (along with the bundled Xerces jars). The doc in the above code is of type org.w3.dom.Document (the runtime class used is org.apache.html.dom.HTMLDocumentImpl)

The IBM J9 details are as follows:

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

Any idea, suggestion or workaround is appreciated. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凡尘雨 2024-10-16 05:07:58

我有两个想法。

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

I have 2 ideas.

  1. I have just verified that xerces is a part of the JRE installation, so I believe it arrives to the classpath of your application from there. Probably SUN and IBM bring you different versions of xerces. So, as a first approach check it and probably try to replace what you have under IBM to the SUN's version. If it helps you have 2 options: continue running IBM java with xerces from SUN or continue to investigate what's wrong with xerces from IBM.
  2. Are there other differences between your dev and production environments? Are these the same operating systems? Is it a chance that you are using (for example) windows for development and unix for production but your xml is written on Windows with \r\n as a new line? Or even more: if your XML contains unicode characters and written in windows it can contain special (invisible) prefix that indicates that this is unicode. This prefix may cause parser to fail.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文