質問

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つのアイデアがあります。

  1. XercesがJREインストールの一部であることを確認したばかりなので、そこからあなたのアプリケーションのクラスパスに到達すると思います。おそらくSunとIBMは、さまざまなバージョンのXercesをもたらします。したがって、最初のアプローチとしてそれをチェックし、おそらくIBMの下にあるものを太陽のバージョンに置き換えるようにしてください。 2つのオプションがある場合は、SunからXercesを使用してIBM Javaを実行し続けるか、IBMのXercesの何が問題なのかを調査し続けます。
  2. 開発環境と生産環境に他の違いはありますか?これらは同じオペレーティングシステムですか?開発には(たとえば)Windowsを使用して生産にUNIXを使用している可能性はありますか?またはさらに:XMLにUnicode文字が含まれており、Windowsに書かれている場合、これがUnicodeであることを示す特別な(見えない)プレフィックスを含めることができます。このプレフィックスにより、パーサーが失敗する可能性があります。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top