Здравствуйте уважаемые форумчане. Помогите решить задачу. Есть папка с файлами xml. Для простоты 1, 2, 3, ....100.xml. Необходимо получить данные из файлов по тегам: 1. <CadastralNumber>...........</CadastralNumber> 2. <Surname>......</Surname> 3. <First>............</First> 5. <Patronymic>........</Patronymic>
Каждому тегу свой столбец. Если существует такая возможность получения данных, помогите.
Я думаю Вам нужны другие данные... Какие - не знаю
Можете попробовать:
Код
Function GetXML(ByVal NeedName As String, xmlpath As String)
Dim XmlDoc As MSXML2.DOMDocument60
Dim objListOfNodes As IXMLDOMNodeList
Dim oElement As IXMLDOMElement
Dim i&, divisor As Single, CurrencyRate As Double
Dim col As New Collection
Set XmlDoc = New DOMDocument60
XmlDoc.async = False
XmlDoc.validateOnParse = False
XmlDoc.Load xmlpath
XmlDoc.setProperty "SelectionLanguage", "XPath"
Set objListOfNodes = XmlDoc.selectNodes("//*")
For Each oElement In objListOfNodes
If oElement.nodeName = NeedName Then col.Add oElement.nodeTypedValue
Next
ReDim a(1 To col.Count, 1 To 1)
For i = 1 To col.Count
a(i, 1) = col(i)
Next
GetXML = a
End Function
Спасибо Hygo, я уже почти разобрался. Те файлы о которых я писал это кадастровые выписки и мне необходимо было вытянуть из них кадастровый номер и собственника. Есть программа rosreestrXML которая может конвертировать xml выписки в CSV (причем пакетно). Спасибо за внимание и потраченное время.
С фамилиями работает так (по одному файлу, можно запихнуть в цикл):
Код
Option Explicit
Function GetXML(ByVal NeedName As String, subnode As String, xmlpath As String)
Dim XmlDoc As MSXML2.DOMDocument60
Dim objListOfNodes As IXMLDOMNodeList
Dim oElement As IXMLDOMElement
Dim i&, divisor As Single, CurrencyRate As Double
Dim col As New Collection, subn, subnn
Set XmlDoc = New DOMDocument60
XmlDoc.async = False
XmlDoc.validateOnParse = False
XmlDoc.Load xmlpath
XmlDoc.setProperty "SelectionLanguage", "XPath"
Set objListOfNodes = XmlDoc.selectNodes("//*")
For Each oElement In objListOfNodes
If oElement.nodeName = NeedName Then
If oElement.ChildNodes(0).nodeName = subnode Then
For Each subn In oElement.ChildNodes(0).ChildNodes
For Each subnn In subn.ChildNodes
col.Add subnn.nodeTypedValue
Next
Next
End If
End If
Next
If col.Count Then
ReDim a(1 To col.Count, 1 To 1)
For i = 1 To col.Count
a(i, 1) = col(i)
Next
GetXML = a
Else
GetXML = Array()
End If
End Function
Sub test()
Dim a()
a = GetXML("Owner", "Person", "C:\temp\doc10851980.xml")
[a1].Resize(1, UBound(a)) = Application.Transpose(a)
End Sub