Ik heb een functie geschreven, die zoekt naar de waarde van een bepaald attribuut (searchtag) in een XML bericht (message) en dat teruggeeft. Het is geen optie om de XML in excel zelf te mappen, aangezien het om duizenden berichten gaat, die verschillend opgebouwd kunnen zijn (niet alle attributen / nesting zijn hetzelfde, kan per bericht anders zijn).
De code werkt prima, maar ik vroeg me af of hier nog iets aan te optimaliseren valt. Voor zo'n 5000 berichten gaat het nu nog aardig (+- 10sec), maar ik verwacht in nabije toekomst veel meer berichten te krijgen waar deze functie op losgelaten moet worden.
Ideen voor optimalisatie? (mag ook in een andere oplossingsrichting liggen)
Googelen op de gebruikte standaard excel functies (zoals Instr) leert me dat er optimalisatie mogeiljk is als je de startpositie kunt verhogen, maar op voorhand heb ik daar geen kennis over.
De code werkt prima, maar ik vroeg me af of hier nog iets aan te optimaliseren valt. Voor zo'n 5000 berichten gaat het nu nog aardig (+- 10sec), maar ik verwacht in nabije toekomst veel meer berichten te krijgen waar deze functie op losgelaten moet worden.
code:
1
2
3
4
5
6
7
8
9
| Public Function search(Searchtag) As String startpos = InStr(1, Message, Searchtag) + Len(Searchtag) 'Set position to first character after the found SearchTag Length = InStr(1, Mid(Message, startpos, 33), "</") - 1 'Look for the closing "</" tag within 31 characters after start (31=max length of attribute value) If Length <> -1 Then 'If tag was not found, length will be -1 search = Mid(Message, startpos, Length) 'return the result in the End If End Function |
Ideen voor optimalisatie? (mag ook in een andere oplossingsrichting liggen)
Googelen op de gebruikte standaard excel functies (zoals Instr) leert me dat er optimalisatie mogeiljk is als je de startpositie kunt verhogen, maar op voorhand heb ik daar geen kennis over.
tjah..