Страницы: 1
RSS
Извлечь данные с файлов xml
 
Здравствуйте уважаемые форумчане. Помогите решить задачу.
Есть папка с файлами xml. Для простоты 1, 2, 3, ....100.xml. Необходимо получить данные из файлов по тегам:
1. <CadastralNumber>...........</CadastralNumber>
2. <Surname>......</Surname>
3. <First>............</First>
5. <Patronymic>........</Patronymic>

Каждому тегу свой столбец.
Если существует такая возможность получения данных, помогите.

xml могу в html конвертнуть
Изменено: Сергей Иванов - 12.02.2014 12:11:42
 
Я думаю Вам нужны другие данные... Какие - не знаю  :)  

Можете попробовать:

Код
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 (причем пакетно). Спасибо за внимание и потраченное время.
 
в 10м икселе нормально ваши данные загружаются на лист, просто берете и копируете столбцы..
Живи и дай жить..
 
С фамилиями работает так (по одному файлу, можно запихнуть в цикл):

Код
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
 
Для номера нужна другая функция.
Страницы: 1
Читают тему
Наверх