如何使用xpath/htmlwebunit
获取标记中的值我试图创建一个从网页中检索信息的Java应用程序。这是我试图访问该值在第一td标签在第二tr标签的部分代码:如何使用xpath/htmlwebunit
<TABLE CLASS="datadisplaytable" width = "100%">
<TR>
<TD CLASS="dddead"> </TD>
<TH CLASS="ddheader" scope="col" ><SPAN class="fieldlabeltext">Capacity</SPAN></TH>
<TH CLASS="ddheader" scope="col" ><SPAN class="fieldlabeltext">Actual</SPAN></TH>
<TH CLASS="ddheader" scope="col" ><SPAN class="fieldlabeltext">Remaining</SPAN></TH>
</TR>
<TR>
<TH CLASS="ddlabel" scope="row" ><SPAN class="fieldlabeltext">Seats</SPAN></TH>
**<TD CLASS="dddefault">46</TD>**
<TD CLASS="dddefault">46</TD>
<TD CLASS="dddefault">0</TD>
</TR>
这就是我现在所拥有的,但这只返回类的td标签,而不是它里面的值:
List<?> table = page.getByXPath("//table[@class='datadisplaytable'][1]//tr[2]/td");
我该如何去得到td标签的价值而不是它的属性?
编辑:
HtmlTableDataCell[<td class="dddefault">]
我试图创建一个从网页检索信息的Java应用程序:以上的回报这个代码。这是我试图访问该值在第一td标签在第二tr标签的代码的一部分:
假设该文件是在问题,如图(TABLE
是所述顶部元件),
使用:
/TABLE/TR[2]/TD[1]/text()
此选择第一TD
儿童的所述第二子TR
顶部元件TABLE
中的任何文本子节点。
如果表被掩埋在XML文档中,但可以通过其CLASS
属性被唯一标识,使用:
//TABLE[@CLASS='datadisplaytable']/TR[2]/TD[1]/text()
这将选择第一TD
孩子的任何文本节点孩子第二个TR
XML文档中的任何(我们知道只有一个这样的)子元素TABLE
的子元素,使得其CLASS
属性的字符串值为字符串'datadisplaytable'
。
最后,如果更糟的是,可能有许多TABLE
元件,其CLASS
属性的值是'datadisplaytable'
,我们希望在第一个这样的表,使用选择:
(//TABLE[@CLASS='datadisplaytable'])[1]/TR[2]/TD[1]/text()
这有助于理解xpath的细节。我不知道可以只做文本()。这可能比投射和使用.getTextContent()更好。谢谢您的帮助! – KrispyDonuts 2012-02-28 19:28:51
@Saad:你可以通过使用标准的XPath函数'string()'直接得到字符串值。所以,'string(expressionSelectingAnElement)'返回元素的所有文本节点后代的连接。 – 2012-02-28 19:54:34
for getting the text content from an element there is an xpath function called "text()" which you can use.
Element containing text 't' exactly //*[.='t']
Element <E> containing text 't' //*[.='t']
<a> containing text 't' //a[contains(text(),'t')]
<a> with target link 'url' //a[@href='url']
Link URL labeled with text 't' exactly //a[.='t']/@href
如果您也使用JwebUnit,还有一个方法“getElementTextByXPath”,它也可以用来获取文本。 net.sourceforge.jwebunit.junit.WebTestCase
getElementTextByXPath
公共字符串getElementTextByXPath(字符串的XPath) 已过时。 获取给定元素的文本。参数 xpath - 元素的xpath。
for (int i = 1; i != 6; i++) {
String result = getElementTextByXPath("//td["+i+"][text()]");
System.out.println("The Content of TD is " +result);
}
您需要获取文本()? – Eduardo 2012-02-28 18:58:02
我需要获取td标签内的值,在这种情况下,它将是'46' – KrispyDonuts 2012-02-28 19:00:59
自从我上次使用Java以来已经有一段时间了,但应该有一种叫做text()的方法,或者类似的东西 – Eduardo 2012-02-28 19:01:55