Sun JRE v1.5およびIBM J9 V1.5で異なる動作をXerces
質問
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 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
どんなアイデア、提案、または回避策を歓迎します。ありがとう。
解決
私には2つのアイデアがあります。
- XercesがJREインストールの一部であることを確認したばかりなので、そこからあなたのアプリケーションのクラスパスに到達すると思います。おそらくSunとIBMは、さまざまなバージョンのXercesをもたらします。したがって、最初のアプローチとしてそれをチェックし、おそらくIBMの下にあるものを太陽のバージョンに置き換えるようにしてください。 2つのオプションがある場合は、SunからXercesを使用してIBM Javaを実行し続けるか、IBMのXercesの何が問題なのかを調査し続けます。
- 開発環境と生産環境に他の違いはありますか?これらは同じオペレーティングシステムですか?開発には(たとえば)Windowsを使用して生産にUNIXを使用している可能性はありますか?またはさらに:XMLにUnicode文字が含まれており、Windowsに書かれている場合、これがUnicodeであることを示す特別な(見えない)プレフィックスを含めることができます。このプレフィックスにより、パーサーが失敗する可能性があります。
所属していません StackOverflow