3

私はhtmlドキュメントを持っていて、ドキュメント内のどこかがテーブルの下にあり、テーブルの行とJavaDOMオブジェクトを取得できます。値が文字列である場合、およびバイナリリソースである場合に、テーブルセルの値を抽出する方法がわかりません。

私は次のようなコードを使用しています:

  XPath xpath;
   XPathExpression expr;
   NodeList nodes=null;
   // Use XPath to obtain whatever you want from the (X)HTML
   try{

      xpath = XPathFactory.newInstance().newXPath();
      //<table class="data">

      NodeList list = doc.getElementsByTagName("table");
     // Node node = list.item(0); 
     //System.out.println(node.getTextContent());
    //String textContent=node.getTextContent();

    expr = xpath.compile("//table/tr/td");
    nodes = (NodeList)expr.evaluate(doc, XPathConstants.NODESET);

とloopiongのように:

     for (int i = 0; i < nodes.getLength(); i++) {

       Node ln = list.item(i);
       String lnText=ln.toString();
       NodeList rowElements=ln.getChildNodes();
       Node one=rowElements.item(0);

       String oneText=one.toString();
       String nodeName=one.getNodeName();
       String valOne = one.getNodeValue();

しかし、私は表に値が表示されていません。

 <table class="data">
 <tr><td>ImageName1</td><td width="50"></td><td><img src="/images/036000291452" alt="036000291452" /></td></tr>
 <tr><td>ImageName2</td><td width="50"></td><td><img src="/images/36000291452" alt="36000291452" /></td></tr>
 <tr><td>Description</td><td></td><td>Time Magazine</td></tr>
 <tr><td>Size/Weight</td><td></td><td>14 Issues</td></tr>
 <tr><td>Issuing Country</td><td></td><td>United States</td></tr>
  </table>
4

2 に答える 2

1

このXPath式

/*/tr[1]/td[1]

提供されたXMLドキュメントの最上位要素()の最初の子tdの最初の子である要素(名前空間なし)を選択します。trtable

XPath式

/*/tr[1]/td[2]

提供されたXMLドキュメントの最上位要素( )tdの最初の子の2番目の子である要素(名前空間なし)を選択します。trtable

一般的に

/*/tr[$m]/td[$n]

提供されたXMLドキュメントの最上位要素()の-番目の子の-番目の子であるtd要素(名前空間なし)を選択します。とを目的の整数値に置き換えるだけです。$n$mtrtable$m$n

標準のXPath関数string()を使用して、文字列値を取得できます。

string(/*/tr[$m]/td[$n])

提供されたXMLドキュメントの最上位要素()の-番目の子の-番目の子であるtd要素(名前空間なし)の文字列値に評価されます。$n$mtrtable

于 2011-05-09T03:06:57.253 に答える
-1

「string(// td)」のようなパスを使用して、各セルの文字列の内容を取得します。リンクされたリソースの場合、「// td / img / @ src」などを使用してURLを取得し、ソースURLを基準にして正規化し、結果のURLをネットワークから取得する必要があります。

于 2011-05-09T02:13:59.877 に答える