6

Webページから情報を取得するJavaアプリケーションを作成しようとしています。これは、2番目のtrタグの1番目のtdタグの値にアクセスしようとしているコードの一部です。

<TABLE  CLASS="datadisplaytable" width = "100%">
<TR>
    <TD CLASS="dddead">&nbsp;</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">]
4

2 に答える 2

10

Webページから情報を取得するJavaアプリケーションを作成しようとしています。これは、2番目のtrタグの1番目のtdタグの値にアクセスしようとしているコードの一部です。

ドキュメントが質問に示されているとおりであると仮定すると(TABLEが一番上の要素です)、

使用

/TABLE/TR[2]/TD[1]/text()

これにより、最上位要素TDの2番目の子の最初の子のテキストノードの子が選択されます。TRTABLE

CLASSテーブルがXMLドキュメントに埋め込まれているが、その属性によって一意に識別できる場合は、次を使用します。

//TABLE[@CLASS='datadisplaytable']/TR[2]/TD[1]/text()

これにより、XMLドキュメント内の任意の要素TDの2番目の子の最初の子の任意のテキストノードの子が選択され、その属性の文字列値は文字列になります。TRTABLECLASS'datadisplaytable'

最後に、さらに悪い場合は、属性の値がでTABLEある要素が多数存在する可能性があり、最初のそのようなテーブルで選択する場合は、次を使用します。CLASS'datadisplaytable'

(//TABLE[@CLASS='datadisplaytable'])[1]/TR[2]/TD[1]/text()
于 2012-02-28T19:17:02.807 に答える
1
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

public String getElementTextByXPath(String 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);
    }
于 2012-04-02T09:56:36.713 に答える