我想編寫的代碼,將通過這個DOM結構篩選:解析DOM使用XML(VBA)
<html>
<head>
<body>
<table id="the-table" border="1">
<thead>
<tbody>
<tr> </tr>
<tr>
<td class="x-grid3-hd-inner" bgcolor="#8dd5e7" colspan="7">
</tr>
<tr>
<td class="x-grid3-hd-inner" bgcolor="#8dd5e7" colspan="7">
</tr>
<tr>
<tr>
<td class="oneline">2</td>
<td class="oneline">ENB</td>
<td class="oneline">2</td>
<td class="oneline">CELL_99</td>
<td class="oneline">255.255.255.0</td>
<td class="oneline">My Group</td>
<td class="oneline">*</td>
</tr>
<tr>
<tr>
<tr>
...
<tr>
<tr>
</tbody>
</table>
</body>
</html>
我試圖提取每個TD元素的文本表的所有TR元素。我在上面擴展了一個例子。表格的所有td元素都使用相同的html結構格式化(除了表格的標題)。這是迄今爲止使用的方法。
Sub ParseWebPage(url As String, sheet As String, searchCrit As String)
Dim objXML As MSXML2.DOMDocument
Set objXML = New MSXML2.DOMDocument
Set htm = CreateObject("htmlFile")
With CreateObject("msxml2.xmlhttp")
.Open "GET", url, False
.send
xmlresp = .responseText
End With
objXML.loadXML (xmlresp)
Dim objElem As MSXML2.IXMLDOMElement
Debug.Print xmlresp
objXML.loadXML (xmlresp)
Set objElem = objXML.selectSingleNode("tr")
Debug.Print "Found" & objElem.text
End Sub
問題是,每當我的objElem返回空。我也嘗試使用NodeList而不是IXMLDOMElement,但它總是返回空。
我認爲問題是字符串參數。我曾嘗試使用「tr」,「oneline」,「/ html/body/table/tbody」,併爲每個「/ html/body/table/tbody/tr [x]/td [y]」創建循環,但是這些都沒有效果。
有人可以幫我嗎?
您的一般方法是正確的。我認爲這個問題是非格式良好的XML(通常來自網絡的HTML)。我看到很多'
@LoganReed該網站已經完全形成並可操作幷包含所有結束標記,這可能是發生的複製錯誤。我會看看這個鏈接,看看是否有幫助。 –
首先嚐試使用非常小的格式良好的XML示例,然後繼續擴展,直到找到錯誤。 –