Parsing af XML data via vba
jeg har et problem med at kunne parse noget XML jeg har modtaget via en SOAP forbindelse.dvs jeg kan få fat i data via DocumentElement ved at bruge:
Set lists = Svar.DocumentElement
Set getchild = lists.ChildNodes(0).ChildNodes(0).ChildNodes(0).ChildNodes(2)
Men dette er jo ikke særligt fleksibelt da jeg kan mangle childnodes og jeg ville gerne benytte den mere fleksible løsning med at benytte f.eks. Xpath, men denne giver mig empty værdier lige meget hvad jeg gør
Svar.async = False: Svar.validateOnParse = False
Svar.LoadXML Kald.responseText
Set lists = Svar.DocumentElement
For Each listNode In lists.ChildNodes
For Each fieldNode In listNode.ChildNodes
Debug.Print "[" & fieldNode.BaseName & "] = [" & fieldNode.Text & "]"
Next fieldNode
Next listNode
eksempel på xml:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><CreditorEntry_GetDataResponse xmlns="http://e-conomic.com"><CreditorEntry_GetDataResult><Handle><SerialNumber>111289</SerialNumber></Handle><SerialNumber>111289</SerialNumber><Type>CreditorInvoice</Type><Date>2014-09-30T00:00:00</Date><CreditorHandle><Number>96100277</Number></CreditorHandle><AccountHandle><Number>6800</Number></AccountHandle><VoucherNumber>10666</VoucherNumber><Text>Test data</Text><AmountDefaultCurrency>-31250.00</AmountDefaultCurrency><CurrencyHandle><Code>DKK</Code></CurrencyHandle><Amount>-250.00</Amount><InvoiceNumber>008</InvoiceNumber><DueDate>2015-01-02T00:00:00</DueDate><Remainder>-250.00</Remainder><RemainderDefaultCurrency>-250.00</RemainderDefaultCurrency></CreditorEntry_GetDataResult></CreditorEntry_GetDataResponse></soap:Body></soap:Envelope>
Hvad gør jeg galt?