Analiza XML primera, modeliranje u WhiteStarUML, pravljenje VB6 klasa. Deo 1. - Analiza XML

19.12.2025 Prusac | 19.12.2025


< 1 min
Uvod u kreiranje sadržaja. Na kraju teksta je u koju upisujete naslov novog članka. Nakon toga - klik na dugme kreiraj.


Uvod

Ministarstvo finansija RS je postavilo na svom sajtu 4 primera eOtpremnica u XML formatu.

Iz ta 4 XML-a treba izvući strukturu, na osnovu te strukture napraviti dijagram u WhiteStarUML, te zatim generisati VB6 klase.

Dobijanje strukture iz XML dokumenata

Za analizu strukture dobijena 4 XML dokumenta može da se koristi XMLStarlet - alatka za rad sa XML u terminalu.

Instalacija XMLStarlet

Ubuntu i druge Debian distribucije:

sudo apt install xmlstarlet

Uputstvo za rad (nakon instalacije):

man xmlstarlet

Uputstvo za specifičnu komandu:

xmlstarlet el --help

Struktura XML dokumenata

xmlstarlet el prikazuje strukturu XML dokumenta.
-u sortira rezultate i uklanja duplikate.
> preusmerava rezultate u fajl, koji će biti kreiran ako ne postoji.
>> dodaje rezultate na sadržaj postojećeg fajla.

user@pc:~$ xmlstarlet el -u eOtpremnica_UBL_pr_001.xml > struktura
user@pc:~$ xmlstarlet el -u eOtpremnica_UBL_pr_002.xml >> struktura
user@pc:~$ xmlstarlet el -u eOtpremnica_UBL_pr_003.xml >> struktura
user@pc:~$ xmlstarlet el -u eOtpremnica_UBL_pr_004.xml >> struktura

Možemo da pogledamo kako sada izgleda sadržaj fajla "struktura":

user@pc:~$ head struktura 
DespatchAdvice
DespatchAdvice/cac:AdditionalDocumentReference
DespatchAdvice/cac:AdditionalDocumentReference/cac:Attachment
DespatchAdvice/cac:AdditionalDocumentReference/cac:Attachment/cbc:EmbeddedDocumentBinaryObject
DespatchAdvice/cac:AdditionalDocumentReference/cbc:DocumentDescription
DespatchAdvice/cac:AdditionalDocumentReference/cbc:ID
DespatchAdvice/cac:DeliveryCustomerParty
DespatchAdvice/cac:DeliveryCustomerParty/cac:Party
DespatchAdvice/cac:DeliveryCustomerParty/cac:Party/cac:Contact
DespatchAdvice/cac:DeliveryCustomerParty/cac:Party/cac:Contact/cbc:ElectronicMail
user@pc:~$

Prefiksi ('cac', 'cbc' itd.) nam ne trebaju u ovom zadatku. Samo nam smanjuju preglednost. Možemo da ih izbacimo iz fajla "struktura" koristeći alatku "sed". Sačuvaćemo rezultat u fajlu "bez_prefiksa":

user@pc:~$ sed 's/cac://g; s/cbc://g; s/cec://g; s/sbt://g' struktura > bez_prefiksa

s koristimo za zamenu nekog stringa.
s/šta sed traži/čime to da zameni/g
g global - zameni na svim pozicijama gde pronađeš.

sed s/cac://g = sed s#cac:##g
Ako vam zatreba da zamenite string koji sadrži / (slash) - možete koristiti bilo koji drugi karakter kao separator, npr. ovo je u potpunosti ispravno: sed s#http://192.168.0.11#http://melany.rs#g


Kako sada izgleda sadržaj fajla "bez_prefiksa":

user@pc:~$ head bez_prefiksa 
DespatchAdvice
DespatchAdvice/AdditionalDocumentReference
DespatchAdvice/AdditionalDocumentReference/Attachment
DespatchAdvice/AdditionalDocumentReference/Attachment/EmbeddedDocumentBinaryObject
DespatchAdvice/AdditionalDocumentReference/DocumentDescription
DespatchAdvice/AdditionalDocumentReference/ID
DespatchAdvice/DeliveryCustomerParty
DespatchAdvice/DeliveryCustomerParty/Party
DespatchAdvice/DeliveryCustomerParty/Party/Contact
DespatchAdvice/DeliveryCustomerParty/Party/Contact/ElectronicMail
user@pc:~$ 

Prilikom izvlačenja strukture iz XML primera izbacivali smo duplikate na nivou jednog XML dokumenta sa -u ali smo rezultate dodavali u isti fajl (661 linija), tako da duplikati sigurno postoje, treba ih izbaciti.

user@pc:~$ sort -u bez_prefiksa > sortirano

Konačno imamo sortiranu strukturu XML dokumenta bez duplikata. Svega 183 linije od prethodnih 661.

rezime
Preuzeli smo XML primere sa sajta Ministarstva finansija, analizirali njihovu strukturu, i sada imamo fajl 'sortirano' sa 183 linije koje ćemo koristiti za pravljenje dijagrama u WhiteStarUML.