Analiza XML primera, modeliranje u WhiteStarUML, pravljenje VB6 klasa. Deo 1. - Analiza XML
< 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š.
/ (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.