Здравствуйте. Следующий код должен выдавать количество подходящих узлов MeasurePoint, в которых поле Title содержит "Газ"
Код
Private Sub test()
Dim doc As MSXML2.DOMDocument
Dim nlist As MSXML2.IXMLDOMNodeList
Set doc = New MSXML2.DOMDocument
doc.setProperty "SelectionLanguage", "XPath"
doc.Load "d:\5.xml"
MsgBox doc.XML
Set nlist = doc.SelectNodes("//MeasurePoint[contains(Title,'Газ')]")
MsgBox "Matching Nodes : " & nlist.Length
End Sub
xml файл получаю по API, имеет вид:
Скрытый текст
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";; xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetNodeByIdExtendedResult xmlns="http://www.lers.ru/website/api"><ErrorMessage/>;<ErrorCode>None</ErrorCode><Node><Id>1380</Id><Title>Котельная, г. Ломоносов</Title><Address>г. Ломоносов</Address> <Number>545</Number><Comment/><ResponsibleName/><ResponsiblePhone/><Type>Node</Type><Systems><AllMeasurePoints><MeasurePoint><Id>1711</Id><Title>СО - подпитка</Title><FullTitle>Котельная, г. ЛомоносовСО - подпитка</FullTitle><Address>г. Ломоносов</Address><SystemType>ColdWater</SystemType><Type>Regular</Type><Number>287</Number><Comment/><State>Error</State><NodeId>1380</NodeId><IsDoublePipeHotWaterSystem>false</IsDoublePipeHotWaterSystem><IsTwoChannels>false</IsTwoChannels><CurrentRatio>1</CurrentRatio><VoltageRatio>1</VoltageRatio><DataParameters><DataParameter>T_in</DataParameter><DataParameter>P_in</DataParameter><DataParameter>M_in</DataParameter><DataParameter>V_in</DataParameter><DataParameter>NormalOperationDuration</DataParameter></DataParameters></MeasurePoint><MeasurePoint><Id>1712</Id><Title>ГВС</Title><FullTitle>Котельная, г. Ломоносов - ГВС</FullTitle><Address>г. Ломоносов</Address><SystemType>HotWater</SystemType><Type>Regular</Type><Number>288</Number><Comment/><State>Error</State><NodeId>1380</NodeId><IsDoublePipeHotWaterSystem>true</IsDoublePipeHotWaterSystem><IsTwoChannels>true</IsTwoChannels><CurrentRatio>1</CurrentRatio><VoltageRatio>1</VoltageRatio><DataParameters><DataParameter>T_in</DataParameter><DataParameter>T_out</DataParameter><DataParameter>T_delta</DataParameter><DataParameter>T_cw</DataParameter><DataParameter>P_in</DataParameter><DataParameter>P_out</DataParameter><DataParameter>M_in</DataParameter><DataParameter>M_out</DataParameter><DataParameter>M_delta</DataParameter><DataParameter>V_in</DataParameter><DataParameter>V_out</DataParameter><DataParameter>V_delta</DataParameter><DataParameter>Q_in</DataParameter><DataParameter>Q_out</DataParameter><DataParameter>Q_delta</DataParameter><DataParameter>NormalOperationDuration</DataParameter></DataParameters></MeasurePoint><MeasurePoint><Id>1710</Id><Title>СО</Title><FullTitle>Котельная, г. Ломоносов - СО</FullTitle><Address>г. Ломоносов</Address><SystemType>Heat</SystemType><Type>Regular</Type><Number>286</Number><Comment/><State>Error</State><NodeId>1380</NodeId><IsDoublePipeHotWaterSystem>false</IsDoublePipeHotWaterSystem><IsTwoChannels>true</IsTwoChannels><CurrentRatio>1</CurrentRatio><VoltageRatio>1</VoltageRatio><DataParameters><DataParameter>T_in</DataParameter><DataParameter>T_out</DataParameter><DataParameter>T_delta</DataParameter><DataParameter>T_cw</DataParameter><DataParameter>P_in</DataParameter><DataParameter>P_out</DataParameter><DataParameter>M_in</DataParameter><DataParameter>M_out</DataParameter><DataParameter>M_delta</DataParameter><DataParameter>V_in</DataParameter><DataParameter>V_out</DataParameter><DataParameter>Q_in</DataParameter><DataParameter>Q_out</DataParameter><DataParameter>Q_delta</DataParameter><DataParameter>NormalOperationDuration</DataParameter></DataParameters></MeasurePoint><MeasurePoint><Id>1292</Id><Title>Газ</Title><FullTitle>Котельная, г. Ломоносов - Газ</FullTitle><Address>г. Ломоносов</Address><SystemType>Gas</SystemType><Type>Regular</Type><Number>437</Number><Comment/><State>Normal</State><NodeId>1380</NodeId><IsDoublePipeHotWaterSystem>false</IsDoublePipeHotWaterSystem><IsTwoChannels>false</IsTwoChannels><CurrentRatio>1</CurrentRatio><VoltageRatio>1</VoltageRatio><DataParameters><DataParameter>T_outdoor</DataParameter><DataParameter>T</DataParameter><DataParameter>P</DataParameter><DataParameter>V</DataParameter><DataParameter>V_std</DataParameter></DataParameters></MeasurePoint></AllMeasurePoints></Systems><GeoLocation><Latitude>59.9</Latitude><Longitude>29.7</Longitude></GeoLocation><State>Error</State><Territory><Id>825</Id><Name>545 Котельная, г. Ломоносов</Name><TimeZone><Offset>3</Offset><Title>(UTC+03:00) Волгоград, Москва, Санкт-Петербург (RTZ 2)</Title></TimeZone><CopyMeasurePointId xsi:nil="true"/></Territory></Node></GetNodeByIdExtendedResult></soap:Body></soap:Envelope>
При этом если <GetNodeByIdExtendedResult xmlns="http://www.lers.ru/website/api">; заменить на <GetNodeByIdExtendedResult>, то поиск выполняется Что нужно добавить в коде, чтобы поиск выполнялся без модификации xml файла?
Здравствуйте. Из xml файла нужно получить несколько элементов с определенным значением в поле Title (все элементы, у которых это поле не равно слову Объект), для этого используется такая строка:
Код
Set Nodes = GMPC.SelectNodes("//MyObject[Title!='Объект']")
Как нужно дополнить строку, чтобы исключить все элементы, в поле title которых может содержаться слово Объект (т.е. вариант написания вроде "Объект 1", "Второй объект" и т.п.)
Здравствуйте. Опишу задачу в общих чертах, нужна помощь с определением пути решения. В зависимости от рекомендаций, возможно, пойдут более конкретные вопросы. Есть таблица в Excel с большим количеством строк и столбцов. Данные для них нужно получить из сторонней программы. У программы имеется WEB API и Framework. На чем лучше реализовать подгрузку данных из программы в таблицу, vba или powershell? Для того, чтобы получить доступ через api обязательно требуется авторизация с поддержкой cookies на клиентской стороне.