DDC BC 10 november 2021 - Werken met XML in AL - Technisch

Woensdag, 10 november 2021, door Arend-Jan Kauffmann

In AL zitten een heleboel XML-objecten, die je out of the box voor je ter beschikking hebt. Ze werken net iets anders dan de dot.net varianten die we vroeger in C/AL gebruikten, hoewel die ook nog steeds bestaan en gebruikt kunnen worden.
Arend-Jan had voor beide scenario’s een codeunit gemaakt, die een standaard XML-bericht kon inlezen in een tabel, en die tabel op het scherm tonen.

AL vs. C/AL

Bij de dot.net-variant moet je veel foutmeldingen met try-functions zelf afvangen, anders klapt je XML-import zelf eruit. Daarbij is deze variant niet echt snel, en werkt alleen on prem, bij een SaaS-implementatie in de cloud kun je geen gebruik maken van dot.net.
Bij de AL-variant hoef je de variabelen niet te instantieren, zoals dat bij dot.net wel verplicht is. Ook zijn de lijsten (zoals een NodeList) niet zero-based, maar 1-based, wat betekent dat array-element 0 niet bestaat, de array begint, zoals altijd bij NAV/BC, bij 1. Dit is feitelijk een erfenis van de oude Pascal-standaard waar Navision met C/AL ooit op gebouwd is.

Arend-Jan gaf wel het dringende advies om de variabelen nooit dezelfde naam te geven als het type, omdat deze types als static type ook in de code kunnen terugkomen. Dan wordt het heel verwarrend wat-wat-is, dit voorkom je door de variabelen een eigen naam te geven.
In AL kun je met een foreach-structuur door de NodeLists gaan. Opvallend was, dat ChildNodes ook extra textelementen teruggeeft, zodat je met Node.IsXMLelement() moet controleren of je wel een Node hebt teruggekregen.

XML-document vs. XML-element

Er zijn in AL twee XML-objecten die erg op elkaar lijken, en vaak uitwisselbaar zijn: XML-document en XML-element. XML-document geeft nog een extra regel bovenin de XML met een declaration. 
Arend-Jan toonde ook nog hoe met namespaces in een XML-structuur kan worden gewerkt. De namespace identifiers hoeven niet vooraf bekend of altijd hetzelfde te zijn: in het XML-document wordt deze feitelijk gedefinieerd in de root-element. 
De code die gebruikt is tijdens deze presentatie is beschikbaar op GitHub: https://github.com/ajkauffmann/DemoXML

Verslag: Edo de Roo
Foro's: Vincent van Rens

PS


Voor hen die de sessie gemist hebben: op dinsdag 15 februari 2022 zal Arend-Jan dezelfde sessie presenteren als Areopa webinar. Je kunt je hier registreren: https://register.gotowebinar.com/register/7274655221419569675.

« Naar het overzicht

Events

17 mei 2022 - DDC Jaarevent 17 mei 2022
Kas meeting, De Bleek 13, 3447 GV Woerden
Datum: 17 mei 2022
Meer informatie »

10 november 2021 - Dynamics 365 BC Event, 10 november 2021
Van der Valk Hotel Veenendaal | Bastion 73 | 3905 NJ Veenendaall
Datum: 10 november 2021
Meer informatie »

22 juni 2021 - Dynamics 365 BC Event, 22 juni 2021
gather.town
Datum: 22 juni 2021
Meer informatie »


Nieuws

Dutch Dynamics Community - Nieuwsflits * Juni 2022
06 juni 2022
Lees bericht »

Dutch Dynamics Community - Nieuwsflits * April 2022
25 april 2022
Lees bericht »

Tegosgroup nieuwe Gold sponsor
06 april 2022
Lees bericht »


Blog

DDC Jaarevent Woerden 17 mei 2022
17 mei 2022
Lees blog »

DDC 17 mei 2022 - Bouw meertalige applicaties met help van de Microsoft Dynamics Translation Service
17 mei 2022
Lees blog »

DDC 17 mei 2022 - Business Central Performance & Archiving | Tips en Learnings
17 mei 2022
Lees blog »

Wat is de Dutch Dynamics Community?

Ons doel is het delen van kennis en ervaringen rondom Microsoft Dynamics software.

We bieden de mogelijkheid aan alle Microsoft Dynamics Professionals om met elkaar in contact te komen en deel te nemen aan presentaties en discussies.

Laagdrempelig, onafhankelijk, diepgaand en altijd actueel.

Om iedereen op de hoogte te houden kun je je inschrijven voor een van onze nieuwsbrieven:

Schrijf je hier in voor de Business Central nieuwsbrief

Schrijf je hier in voor de Finance & Operations nieuwsbrief

Platinum sponsors


Gold sponsors

 

Sapphire sponsors


Silver sponsors


Club van 100

c100