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

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 »

23 maart 2021 - Dynamics 365 BC Event, 23 maart 2021
gather.town
Datum: 23 maart 2021
Meer informatie »


Nieuws

Aptean nieuwe Gold sponsor
08 december 2021
Lees bericht »

Dutch Dynamics Community - BC * Nieuwsflits * November 2021
20 november 2021
Lees bericht »

Dutch Dynamics Community - BC * Nieuwsflits * Oktober 2021 * 2
27 oktober 2021
Lees bericht »


Blog

DDC BC-avond Veenendaal 10 november 2021
10 november 2021
Lees blog »

DDC BC 10 november 2021 - Personaliseren in Business Central - Functioneel
10 november 2021
Lees blog »

DDC BC 10 november 2021 - Werken met XML in AL - Technisch
10 november 2021
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