1

htmlファイルを解析するためにjsoupを使用しようとしています。これは、テーブルを使用して製品を表示することで行われました。各製品は、idが1から"n"の範囲の1つのテーブル内にあります。次の例のように:

<table align="center" width="98%" id="A + 1">
   <tbody>
      <tr>
         <td valign="top" style="width: 03%;">
            <span class="line">1</span>
         </td>
         <td valign="top" style="width: 56%;">
            <span class="line">PRODNAME</span>
         </td>
         <td valign="top" style="width: 10%;">
            <span class="line">850.000</span>
         </td>
      </tr>
   </tbody>
</table>

したがって、最初の製品はIDが「A + 1」、2番目の製品は「A+2」というようにテーブルに表示されます。

セレクターを使用してこれらのテーブルを反復処理することはできません。私がやっている:

Document doc = Jsoup.parse(html);
Elements products = doc.select("table[idˆ=A]");
for (Element product : products) {
   // do something
}

正しく読んだ場合(http://jsoup.org/apidocs/org/jsoup/select/Selector.html)、iddoc.select("table[idˆ=A]")属性が「A」で始まるすべてのテーブルを取得する必要があります...

しかし、私のElementsオブジェクト(製品)は空です...私が間違っているのは何ですか?

Netbeans7.1.2を搭載したMacOSX(10.7.4)でjsoup 1.6.3、java1.6.0_31を使用しています。

助けていただければ幸いです。

4

1 に答える 1

3

jsoup が空の結果セットを返すか、無効なセレクターで例外をスローするかはわかりませんが、セレクターで間違ったサーカムフレックス文字を使用しているようです。

とにかく、代わりにこれを試してください:

Document doc = Jsoup.parse(html);
Elements products = doc.select("table[id^=A]");
for (Element product : products) {
   // do something
}
于 2012-06-02T09:36:15.900 に答える