2012-02-28 7 views
5

के साथ मूल्य कैसे प्राप्त करूं मैं जावा एप्लिकेशन बनाने की कोशिश कर रहा हूं जो किसी वेबपृष्ठ से जानकारी पुनर्प्राप्त करता है। इस कोड को मैं 2 टीआर टैग में 1 टीडी टैग में मूल्य का उपयोग करने की कोशिश कर रहा हूँ का हिस्सा है:मैं <td> टैग के अंदर xpath/htmlwebunit

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

यह वही है मैं अभी है, लेकिन यह केवल टीडी टैग की कक्षा से वापस लौट कर नहीं इसके अंदर मूल्य:

List<?> table = page.getByXPath("//table[@class='datadisplaytable'][1]//tr[2]/td"); 

मैं टीडी टैग का मूल्य प्राप्त करने के बारे में कैसे जाऊं, न कि इसकी गुण?

संपादित करें: कोड रिटर्न इस से ऊपर:

HtmlTableDataCell[<td class="dddefault">] 
+0

आपको टेक्स्ट() प्राप्त करने की आवश्यकता है? – Eduardo

+0

मुझे टीडी टैग के अंदर मूल्य प्राप्त करने की आवश्यकता है, इस मामले में यह '46' – KrispyDonuts

+0

होगा क्योंकि मैंने पिछली बार जावा का उपयोग किया था, लेकिन पाठ(), या कुछ समान – Eduardo

उत्तर

7

मैं एक जावा आवेदन है कि एक वेबपेज से जानकारी ले कर बनाने के लिए कोशिश कर रहा हूँ। (TABLE शीर्ष तत्व है),

यह मानते हुए कि दस्तावेज़ के रूप में सवाल में दिखाया गया है: यह कोड मैं मूल्य 2 टीआर टैग में 1 टीडी टैग में उपयोग करने के लिए कोशिश कर रहा हूँ का हिस्सा है

उपयोग:

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

इस शीर्ष तत्व TABLE के दूसरे TR बच्चे की पहली TD बच्चे की किसी भी पाठ नोड बच्चे चयन करता है।

मामले में तालिका XML दस्तावेज में दफन है, लेकिन विशेष रूप से उसकी CLASS विशेषता के आधार पर पहचाना जा सकता है, का उपयोग:

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

इस के पहले TD बच्चे की किसी भी पाठ नोड बच्चे का चयन करता है एक्सएमएल दस्तावेज़ में दूसरा TR कोई भी बच्चा (हम जानते हैं कि यह केवल एक ऐसा है) तत्व TABLE, जैसे कि CLASS विशेषता का स्ट्रिंग मान स्ट्रिंग 'datadisplaytable' है।

अंत में, अगर और भी बदतर, वहाँ कई TABLE तत्वों जिसका हो सकता है CLASS विशेषता के मूल्य 'datadisplaytable' है, और हम इस तरह की पहली टेबल, उपयोग में चयन करना चाहते हैं:

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

यह xpath के विवरण को समझने में बहुत मदद करता है। मुझे नहीं पता था कि पाठ() को करना संभव था। यह कास्टिंग और का उपयोग कर बेहतर हो सकता है .getTextContent()। सहायता के लिए धन्यवाद! – KrispyDonuts

+0

@ साद: आप मानक XPath फ़ंक्शन 'स्ट्रिंग()' का उपयोग कर सीधे स्ट्रिंग मान प्राप्त कर सकते हैं। इसलिए, 'स्ट्रिंग (अभिव्यक्ति चयन चुनना) तत्व के सभी टेक्स्ट-नोड वंशों का समापन देता है। –

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

सार्वजनिक स्ट्रिंग 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); 
    } 
संबंधित मुद्दे