XmlDocumentfuncties

Met de XmlDocumentfuncties kunnen gegevens uit XML (Extensible Markup Language) documenten gelezen worden. Met XmlGetFirstElement kan het eerste element van een reeks uit het XML document worden gelezen en met XmlGetNextElement het volgende element. Met XmlGetElement kunnen individuele XML elementen uit het XML document worden gelezen.

XmlGetElement
XmlGetFirstElement
XmlGetNextElement

Voorbeeld:
{
 String sXmlDoc, sOrder, sNaam, sContact, sContactNaam, sItems
 String sItem,sNpc,sOmschr,sBesteld,sUitVrrd,sMaken,sStkPrys
 Integer iCnt
 Copy(sXmlDoc,
 <root>
   <
Order>
     <
Id>12345</Id>
     <
Naam>Demo BV</Naam>
     <
Adres>Voorbeeldstraat 1</Adres>
     <
PostCode>1234 AB</PostCode>
     <
Woonplaats>Demostad</Woonplaats>
     <
Telefoon>012-3456789</Telefoon>
     <
ContactPersoon>
 
    <Naam>V.O. Orbeeld</Naam>
     <Email1>v.o.orbeeld@demobv.nl</Email1>
     <TelNr>06-12345678</TelNr>
     </
ContactPersoon>
     <
AfleverAdres>
     <Afdeling>Goederenontvangst</Afdeling>
     <Adres1>Beeldweg 9</Adres1>
     <PostCode>1234 AC</PostCode>
     <Woonplaats>DemoStad</Woonplaats>
     </
AfleverAdres>
     <
Items>
       <
Item>
       <Npc>Betaalmethode</Npc>
 
     <Omschrijving>iDEAL</Omschrijving>
       </
Item>
       <
Item>
 
     <Npc>Installatie</Npc>
 
     <Besteld>1</Besteld>
 
     <Maken>1</Maken>
 
     <Omschrijving>Installatie en Configuratie</Omschrijving>
 
     <StkPrys>1500</StkPrys>
  
   </Item>
  
   <Item>
         <
Npc>320</Npc>
       <Omschrijving>Enterprise Webservices</Omschrijving>
       <Besteld>1</Besteld>
 
     <Eenh>Stuk</Eenh>
 
     <APE>1</APE>
 
     <UitVrrd>1</UitVrrd>
 
     <StkPrys>1375</StkPrys>
  
   </Item>
     </
Items>
   </Order>
   <
Order>
     <
Id>98754</Id>
   <Naam>Tester BV</Naam>
   <
Adres>Onderzoeksstraat 1=7</Adres>
   <
PostCode>4321 AA</PostCode>
   <
Woonplaats>Testdorp</Woonplaats>
   <
Telefoon>098-765321</Telefoon>
     <
ContactPersoon>
       <
Naam>P.R Obeer</Naam>
       <
Email1>p.r.orbeer@testerbv.nl</Email1>
       <
TelNr>06-8765321</TelNr>
     </
ContactPersoon>
     <
AfleverAdres>
       <
Afdeling>Inkoop</Afdeling>
 
   <Adres1>Probeerweg 7</Adres1>
 
   <PostCode>4321 BB</PostCode>
 
   <Woonplaats>Testdorp</Woonplaats>
     </
AfleverAdres>
     <
Items>
       <
Item>
         <
Npc>Installatie</Npc>
  
    <Besteld>1</Besteld>
  
    <Maken>1</Maken>
  
    <Omschrijving>Installatie en Configuratie</Omschrijving>
 
     <StkPrys>1500</StkPrys>
       </
Item>
       <
Item>
         <
Npc>223</Npc>
  
    <Omschrijving>eTax module voor automatische BTW en ICP aangifte.</Omschrijving>
  
    <Besteld>1</Besteld>
  
    <Eenh>Stuk</Eenh>
  
    <APE>1</APE>
  
    <UitVrrd>1</UitVrrd>
  
    <StkPrys>475</StkPrys>
       </
Item>
       <
Item>
         <
Npc>330</Npc>
  
    <Omschrijving>SBR Verzendfaciliteit</Omschrijving>
  
    <Besteld>1</Besteld>
  
    <Eenh>Stuk</Eenh>
  
    <APE>1</APE>
  
    <UitVrrd>1</UitVrrd>
  
    <StkPrys>300</StkPrys>
       </
Item>
     </
Items>
   </
Order>
 </root
>)

 While XmlGetElement(Order,sXmlDoc,sOrder,iCnt)
  XmlGetElement(Naam,sOrder,sNaam)
  XmlGetElement(ContactPersoon,sOrder,sContact)
  XmlGetElement(Naam,sContact,sContactNaam)
}

Naam: [sNaam] Contact: [sContactNaam]
{
  Tt = 0
  XmlGetElement(Items,sOrder,sItems)
  If XmlGetFirstElement(Item,sItems,sItem)
}
Npc Omschrijving Besteld UitVrrd Maken StukPrys Totaal
{
   DoSub ShowItem
   While XmlGetNextElement(Item,sItems,sItem)
    DoSub ShowItem
   Wend
}
           Totaal

[Tt]

{
  Endif
  iCnt = iCnt + 1
 Wend
 
 Subroutine ShowItem
  XmlGetElement(Npc,sItem,sNpc)
  XmlGetElement(Omschrijving,sItem,sOmschr)
  XmlGetElement(Besteld,sItem,sBesteld)
  XmlGetElement(UitVrrd,sItem,sUitVrrd)
  XmlGetElement(Maken,sItem,sMaken)
  XmlGetElement(StkPrys,sItem,sStkPrys)
  Aantal = [sUitVrrd] + [sMaken]
  If Aantal>[sBesteld]
   Aant = [sBesteld]
  Endif
  Totaal = Aantal*[sStkPrys]
}
[sNpc] [sOmschr] [sBesteld] [sUitVrrd] [sMaken] [sStkPrys]

[Totaal]

{
  Tt = Tt +Totaal
 EndSub
}



Resultaat:


Naam: Demo BV Contact: V.O. Orbeeld
Npc Omschrijving Besteld UitVrrd Maken StukPrys Totaal
Betaalmethode iDEAL        

0,00

Installatie Installatie en Configuratie 1   1 1500

1.500,00

320 Enterprise Webservices 1 1   1375

1.375,00

          Totaal

2.875,00


Naam: Tester BV Contact: P.R Obeer
Npc Omschrijving Besteld UitVrrd Maken StukPrys Totaal
Installatie Installatie en Configuratie 1   1 1500

1.500,00

223 eTax module voor automatische BTW en ICP aangifte. 1 1   475

475,00

330 SBR Verzendfaciliteit 1 1   300

300,00

          Totaal

2.275,00