| Уважаемые. Вопрос. Есть xml, которая выглядит вот так:
 
 
 <?xml version="1.0" encoding="Windows-1251"?>
<root>
 <id>3904</id>
 <sos_login>848hRRB9Th</sos_login>
 <pfr_xmls>
 <pfr_xml code="014-001" no="014-001-052241">
 
 <регистрационнаяИнформация>
 <датаВремяФормирования>2011-11-09T13:05:05</датаВремяФормирования>
 <списокСубъектов>
 <субъект идентификаторСубъекта="014-001-052241" типСубъекта="АбонентСЭД" имя="Name of firm">
 <списокСертификатов типПодписанта="руководитель">
 <сертификат активный="true">
 MIIEZjCCBB
 </сертификат>
 </списокСертификатов>
 </субъект>
 </списокСубъектов>
 </регистрационнаяИнформация>
 
 
 </pfr_xml>
 <pfr_xml code="014-004" no="014-004-012910">
 
 <регистрационнаяИнформация>
 <датаВремяФормирования>2011-11-09T13:05:05</датаВремяФормирования>
 <списокСубъектов>
 <субъект идентификаторСубъекта="014-004-012910" типСубъекта="АбонентСЭД" имя="Name of Firm">
 <списокСертификатов типПодписанта="руководитель">
 <сертификат активный="true">
 MIIEZjCCBB
 </сертификат>
 </списокСертификатов>
 </субъект>
 </списокСубъектов>
 </регистрационнаяИнформация>
 </pfr_xml>
 </pfr_xmls>
 </root>
 
 
 
 Иногда в теге <pfr_xmls> может быть не две, как сейчас. а три сертификата. А то и один.
 Надо весь текст от тега <РегистрационнаяИнформация> закинуть в отдельную XML и назвать его... Не важно как. А поскольку тут два сертификата, то надо создать две XML.
 Соответственно, вытащив из нее имя компании и серийный номер.
 
 У меня пока временно выглядит код вот так:
 
 
 
 
 Dim DOMDocument1, Node1, tmpStr1
 Set DOMDocument1 = CreateObject("MSXML2.DOMDocument")
 With DOMDocument1
 .Load "C:\XML\" & basenameNEW
 if .parseError.reason <> "" Then
 MsgBox .parseError.reason,vbCritical
 WScript.Quit
 End if
 Set currNode = domdocument1.documentElement
 
 login = currNode.childNodes(1).text 'Копирую значение Логина
 WScript.Echo currNode.childNodes(1).text
 'XML1 = currNode.childNodes(2).text
 'WScript.Echo currNode.childNodes(2).text
 End With
 
 'ТУТ ДОЛЖЕН ИДТИ ВРОДЕ КАК ЦИКЛ FOR EACH.
 'ТОЛЬКО НЕ ПОНИМАЮ С КАКИМИ ПАРАМЕТРАМИ.
 
 
 'Ниже сейчас разбираю одну XML. Вернее придется разобрать один из сертификатов.Но в цикле.
 'Option Explicit
 Dim DOMDocument, Node, tmpStr
 Set DOMDocument = CreateObject("MSXML2.DOMDocument")
 
 'Далее надо загрузить XML с первым сертификатом.
 
 With DOMDocument
 .Load "C:\XML\" & basename 'Я так понимаю, это не надо.
 if .parseError.reason <> "" Then
 MsgBox .parseError.reason,vbCritical
 WScript.Quit
 End if
 With .documentElement.SelectSingleNode("списокСубъектов")
 tmpStr = ""
 For Each Node in .SelectNodes("pfr_xmls")
 'tmpStr = tmpStr & "Идентификатор субъекта: " & Node.GetAttribute("идентификаторСубъекта") & vbCrlf
 'tmpStr1 = tmpStr & "Тип субъекта: " & Node.GetAttribute("идентификаторСубъекта") & vbCrlf
 'tmpStr2 = tmpStr & "имя: " & Node.GetAttribute("имя") & vbCrlf
 sNomer = Node.GetAttribute("идентификаторСубъекта")
 firm = Node.GetAttribute("имя")
 
 Next
 firm = Replace(firm,"'","")
 firm = Replace(firm,"""", "")
 firm = Replace(firm,"»", "")
 firm = Replace(firm,"«", "")
 
 End With
 End With
 
 
 Грубо говоря, структура такая:
 - Скачивание XML. (есть)
 - Считываем поле login. (есть)
 - Далее циклом проходим FOR EACH по всем <pfr_xmls> :
 _______ Сохраняем и формируем новый XML-файл, который начинается только с тегов <РегистрационнаяИнформация> с примерно таким же id и дописываем через "_" цифру по счету. (Пример: id 4556. Значит наши новые XML будут 4556_1, 4556_2)
 _______ Вытаскиваем данные - номер и имя компании.
 _______ Далее идет отсылание на почту (есть).
 
 Основная проблема, не знаю немного структуру работы с XMLDOM
 Ответить
       |