تحديد عنصر يستند إلى نص وسمة من شقيقه ، باستخدام XPath
-
21-09-2019 - |
سؤال
بالنظر إلى المستند ، فإن الهدف هو تحديد الخلية الثانية من الصف الثاني ، في الجدول الأول.
لقد قمت بإنشاء التعبير التالي:
//row/td[2]/text()[td[@class="identifier"]/span[text()="identifier"]]
لكنه لا يعيد أي صفوف. للأسف لا أرى ما هو الخطأ.
بالنسبة لي ، يبدو على ما يرام. يجب أن: التعبير:
select the text
in the second cell
in any row
where
the text of a span equals to "identifier"
and the span is located in cell with a "identifier" class
سأقدر ذلك إذا تمكنت من الإشارة إلى ما أفعله خطأ.
عينة وثيقة XML:
<?xml version="1.0"?>
<html>
<table class="first">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td class="identifier">
<span>identifier</span>
</td>
<td>
foo
<span>ignore</span>
bar
</td>
</tr>
<tr>
<td>row 3, cell 1</td>
<td>row 3, cell 2</td>
</tr>
</table>
<table class="second">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td class="identifier">
<span>not an identifier</span>
</td>
<td>
not a target
</td>
</tr>
<tr>
<td>row 3, cell 1</td>
<td>row 3, cell 2</td>
</tr>
</table>
</html>
المحلول
للوهلة الأولى فقط ، أعتقد أنك تقصد الكتابة:
//tr/td[2][@class="identifier"][span="identifier"]
الشيء الغريب هو أنني لا أرى أي عقد في بيانات العينة التي تتطابق مع جميع الشروط الثلاثة.
تعديل: بناءً على ردود الفعل ، إليك استعلام آخر لمحاولة.
//tr[td/@class="identifier"][td/span="identifier"]/td[2]/text()
لا تنتمي إلى StackOverflow