使用HtmlUnit不返回值

时间:2012-06-14 12:46:11

标签: xpath htmlunit

当我尝试使用以下代码时...返回td标记而不是td标记的值。

List<?> byXPath = page2.getByXPath("//tr[@class='metadata odd']/td");
System.out.println(byXPath.get(0).toString());

例如:如果标签是

<td class='metadata odd'>Arun</td>

结果是

<td class='metadata odd'>

....我需要结果是Arun。请帮助

2 个答案:

答案 0 :(得分:1)

试试这个:

DomText domText = (DomText) form.getFirstByXPath("//tr[@class='metadata odd']/td/text()");
System.out.println(domText.getTextContent());

修改

如果您想获取所有元素,那么只需使用getByXPath代替getFirstByXPath即可。然后遍历返回的List(在你的问题中没有必要,所以我没有添加它)。

答案 1 :(得分:0)

您要查找的内容实际上是td标记的文本子节点的字符串表示形式,而不是您当前请求的td元素本身的字符串表示形式。 使用稍微不同的XPath表达式直接引用文本子节点,如下所示:

List<?> byXPath = page2.getByXPath("//tr[@class='metadata odd']/td/text()");
DomText textNode = (DomText)(byXPath.get(0));
System.out.println(textNode.toString());

另见this question