3

我有一个 html 文档,文档内的某处位于表格下方,我可以获取表格行和 java DOM 对象。我不清楚的是,当值是字符串以及二进制资源时,如何提取表格单元格的值?

我正在使用如下代码:

  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);

和循环喜欢:

     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的第一个子元素的第二个子元素的元素(在无命名空间中) 。trtable

一般来说

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

选择作为所提供 XML 文档的顶部元素 ( ) 的-th子元素的-th 子元素的td元素(在无命名空间中) 。只需将and替换为所需的整数值。$n$mtrtable$m$n

您可以使用标准 XPath 函数string()来获取它们的字符串值:

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

td求值为元素(在无命名空间中)的字符串值,该元素是所提供 XML 文档的顶部元素 ( ) 的第 -th 子元素的第 -th 子$n元素$mtrtable

于 2011-05-09T03:06:57.253 回答
-1

使用“string(//td)”之类的路径来获取每个单元格的字符串内容。对于链接资源,您将需要使用“//td/img/@src”之类的东西来获取 URL,然后将它们相对于源 URL 进行规范化,并从网络中获取结果 URL。

于 2011-05-09T02:13:59.877 回答