1

NekoHTMLを使用して HTML を解析しようとしています。

問題は、以下のコード スニペットを実行する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 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

任意のアイデア、提案、または回避策をいただければ幸いです。ありがとう。

4

1 に答える 1

1

2つのアイデアがあります。

  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 であることを示す特別な (目に見えない) プレフィックスを含めることができます。このプレフィックスにより、パーサーが失敗する可能性があります。
于 2010-12-21T10:24:24.717 に答える