Как создать xpath для следующих братьев и сестер, которые соответствуют критериям - PullRequest
0 голосов
/ 13 октября 2018

Как создать xpath для следующих одноуровневых элементов «a» и «span», которые мне нужны, чтобы найти ссылку href для элементов класса span «METADEC Co.Ltd.»

Расположение элементов одного уровня

/ html / body / table / tbody / tr / td [2] / table [4] / tbody / tr [2] / td[2] /

<span class="texte">METADEC Co.Ltd.</span>
<a href="www.something.com" class="contenu"> BENDIG </a>

Мне нужно получить значение href, текстовое значение которого соответствует

Dim ParticipantNodes As HtmlNodeCollection = doc.DocumentNode.SelectNodes("/html/body/table/tr/td[2]/table[4]/tr[2]/td[2]//span[@class='texte']")
    For Each item As HtmlNode In ParticipantNodes
        If item.Name = "span" And item.InnerText <> "" Then
            If item.InnerText.Contains("METADEC Co.Ltd.") Then
                result = item.Attributes("href").Value 
                Exit For
            End If
        End If
    Next

полная ссылка на веб-страницу;

http://www.eurovent -certification.com / ru / Certified_products / Access_by_programme.php? Lg = en & rub = 04 & srub = 01 & select_prog = AHU

Наконец, я достиг своей цели с помощью ответов, как показано ниже;

        Dim inputOk As Boolean = False
        Dim n As Integer = 1
        Do Until inputOk = True
            Try
                Dim dr As HtmlNode = ParticipantNodes.SelectSingleNode(".//span[@class='texte' and contains(normalize-space(text()),'" & TxtParticipantName.Text & "')]/following-sibling::a[" & n & "]")
                If Trim(dr.InnerText.Replace(vbLf, "").Replace(vbCr, "").Replace(vbTab, "").Replace("&nbsp;", "")) = TxtBrand.Text Then
                    templink = "http://www.eurovent-certification.com/en/Certified_products/Access_by_programme.php" & dr.Attributes("href").Value & "MB+%2F+MB+%2F+MECH"
                    inputOk = True
                End If
            Catch ex As Exception
                MsgBox(ex.ToString)

            End Try
            n += 1
        Loop

Спасибо за помощь.

1 Ответ

0 голосов
/ 14 октября 2018

В «Контакте участника METADEC Co.Ltd. (BENDIG)» вы хотите получить ссылку от «BENDIG», если в вашей коллекции нет этого элемента (a)?

Существует несколько способов, самый короткий из которых будетбыть:

Получить родительский элемент, затем следующий элемент (дочерний элемент этого родителя)

или

Следующий брат элемента

Обе строки или ни одной, однако вы считаете это.

...