首页 > 解决方案 > 识别 XMLHTTP 响应中的 NextSibling

问题描述

我仍在尝试了解 NextSibling,并且我在 excel VBA 中使用 XMLHTTP。这是元素的 HTML

<ul class="list-unstyled list-specification">
                                            <li><span>ID</span> <span class="text-info">22928</span></li>
                                            
                                            <li><span>Category</span> <span class="text-info">Mechanical</span></li>
                                                <li><span>Discipline</span> <span class="text-info">Mechanical  </span></li>
                                                                                            <li><span>Commodity</span> <span class="text-info">Pipe</span></li>
                                                 <li><span>Sub commodity</span> <span class="text-info">12 In Pipe </span></li>
                                                                                            <li><span>UOM</span> <span class="text-info">EA</span></li>
                                                                                              <li><span>Available quantity</span> <span class="text-info">30</span></li>
                                                                                                                                                                                                                                                                            <li><span>Age</span> <span class="text-info">8</span></li>
                                                                                        
                                        </ul>

我已经使用这条线来定位 li (列表)中的第一个跨度,以便识别每个部分的标题

Set post = html.querySelectorAll(".list-specification li span")

然后我使用了这样的循环

    For j = 0 To post.Length - 1
        If post.Item(j).innerText = "ID" Then
            Debug.Print post.Item(j).NextSibling.innerText
        End If
    Next j

尝试使用时出现错误NextSibling。我对此感到困惑NextSibling..你能指导我吗?例如 ID 是列表中的第一个,我想根据我的方法获取该 ID

尝试时出现错误nextElementSibling

Sub Test()
    Dim html As New HTMLDocument, post As Object, i As Long
    With CreateObject("MSXML2.XMLHTTP")
        .Open "Get", "C:\Sample.html", False
        .send
        html.body.innerHTML = .responseText
    End With
    Set post = html.querySelectorAll(".list-specification li span")
    For i = 0 To post.Length - 1
        If post.Item(i).innerText = "ID" Then
            MsgBox post.Item(i).nextElementSibling.innerText: Exit For
        End If
    Next i
End Sub

标签: htmlexcelvba

解决方案


尝试做另一个NextSibling,然后你应该发现它工作:

Set post = Html.querySelectorAll(".list-specification li span")
For j = 0 To post.Length - 1
    If post.Item(j).innerText = "ID" Then
        MsgBox post.Item(j).NextSibling.NextSibling.innerText
        Exit For
    End If
Next j

推荐阅读