Я пытаюсь написать код, который будет отсеивать через эту 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-элементы таблицы форматируются с использованием той же структуры 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
Проблема в том, что каждый раз мой объект возвращается обратно. Я также попытался использовать NodeList вместо IXMLDOMElement, но он всегда возвращался пустым.
Я считаю, что проблема является аргументом строки. Я попытался использовать «tr», «oneline», «/ html/body/table/tbody» и создать цикл для каждого «/ html/body/table/tbody/tr [x]/td [y]», но ни одна из них не была эффективной.
Может кто-нибудь помочь мне здесь?
Ваш общий подход правильный. Я думаю, что проблема заключается в некорректном XML (который часто используется HTML из Интернета). Я вижу много '
@LoganReed Веб-сайт уже полностью сформирован и работоспособен и содержит все закрывающие теги, возможно, это была ошибка копирования. Я посмотрю на эту ссылку и посмотрю, поможет ли это. –
Попробуйте сначала с очень маленьким хорошо сформированным XML-примером, а затем продолжите его, пока не найдете ошибку. –