我有一个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);
和 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>
这个 XPath 表达式:
/*/tr[1]/td[1]
选择td
元素(无命名空间),该元素是所提供 XML 文档的顶部元素 (table
) 的第一个tr
子元素的第一个子元素。
XPath 表达式:
/*/tr[1]/td[2]
选择td
元素(无命名空间),该元素是所提供 XML 文档的顶部元素 (table
) 的第一个tr
子元素的第二个子元素。
一般来说:
/*/tr[$m]/td[$n]
选择td
元素(无命名空间),该元素是所提供 XML 文档的顶部元素 (table
) 的$m
tr
子元素的第$n
个子元素。只需将$m
和$n
替换为所需的整数值即可。
您可以使用标准 XPath 函数string()
来获取其字符串值:
string(/*/tr[$m]/td[$n])
计算为 td
元素(无命名空间)的字符串值,该元素是所提供 XML 文档的顶部元素 (table
) 的第$m
tr
个子元素的第$n
个子元素。
使用类似"string(//td)"的路径来获取每个单元格的字符串内容。对于链接的资源,您需要使用类似"//td/img/@src"的内容来获取URL,然后相对于源URL对其进行规范化,并从网络获取生成的URL。