TKDIS bomo opustili, kaj namesto njega ?

Vse drugo, kar ne spada v nobeno zgornjo kategorijo.
Uporabniški avatar
Runner
Prispevkov: 1079
Pridružen: 03.02.2005 12:05:25

TKDIS bomo opustili, kaj namesto njega ?

Odgovor Napisal/-a Runner » 22.07.2010 13:12:40

Hehe, a ti si se tudi zasekiral.

Jaz sem gledal kodo pet sekund in si rekel: "Čez vikend mu prepišem to solato v GpFluentXml." :)
Ja me je kar zvilo. :) Sploh ker prevečkrat vidim take mojstrovine. Tudi v SimpleStorage je zdaj nekaj podobnega GpFluentXml (SimpleStorage.Builder), samo da mislim da je sintaktično gledano še malce bolj čisto. Sicer pa če napiše direkt z OmniXML bo še vedno super :)

No upam da bo res popravil, zdaj sva že dva ki sva mu pripravljena pomagati. Če ne bolje da ne pride več na pivo ko se dobimo ker ga bom dražil do onemoglosti :D

Uporabniški avatar
Runner
Prispevkov: 1079
Pridružen: 03.02.2005 12:05:25

TKDIS bomo opustili, kaj namesto njega ?

Odgovor Napisal/-a Runner » 22.07.2010 13:14:41

No pa da dam primer :) Najprej koda

Koda: Izberi vse

 
procedure TfMain.btnExample1Click(Sender: TObject);
var
  MyStorage: ISimpleStorage;
begin
  MyStorage := CreateStorage('Books');

  CreateBuilder(MyStorage).Construct(
  [
    AddElement('English',
    [
      AddElement('Science',
      [
        AddElement('Mathematics', 5),
        AddElement('Physics', 0),
        AddElement('Computers', 8),
        AddElement('Engineering',  4),
        AddElement('Electoronics',  8),
        AddElement('Biology',
        [
          AddElement('Microbiology',  4),
          AddElement('Undefined',  3),
          Add(
            procedure(const Element: IElement)
            begin
              // add few elements here
              Element.Append('InsertedNode').AsInteger := 1;
              Element.Append('InsertedNode').AsInteger := 2;
              Element.Append('InsertedNode').AsInteger := 3;
            end
          )
        ])
      ]),
      AddElement('Musical',
      [
        AddElement('Science', 5),
        AddElement('Physics', 0),
        AddElement('Computers', 8)
      ])
    ])
  ]);
end;
In še rezultat. Minimalno sintaktičnega balasta.

Koda: Izberi vse

<Books>
  <English>
    <Science>
      <Mathematics>5</Mathematics>
      <Physics>0</Physics>
      <Computers>8</Computers>
      <Engineering>4</Engineering>
      <Electoronics>8</Electoronics>
      <Biology>
        <Microbiology>4</Microbiology>
        <Undefined>3</Undefined>
        <InsertedNode>1</InsertedNode>
        <InsertedNode>2</InsertedNode>
        <InsertedNode>3</InsertedNode>
      </Biology>
    </Science>
    <Musical>
      <Science>5</Science>
      <Physics>0</Physics>
      <Computers>8</Computers>
    </Musical>
  </English>
</Books>

TonyCaker
Prispevkov: 312
Pridružen: 27.09.2003 18:33:35

TKDIS bomo opustili, kaj namesto njega ?

Odgovor Napisal/-a TonyCaker » 22.07.2010 13:59:56

Dečki, hvala za pomoč. Mea culpa. Samo v pojasnilo (ne obrambo): OmniXML sploh še ni obstajal, ko smo parsali in kreirali prve HTML-je in potem XML-je. Zato smo se pač tako navadili.

MOJ problem= najti informacije in razumeti VSEBINO podatkov, ki jih zahtevajo banke za izvedbo transakcij. Kot sem že omenil, balasta je OGROMNO. Potem je naslednji problem na isti imenovalec spraviti podatke iz moje poslovne aplikacije in ugotoviti, kaj hudiča že imamo in kaj je novega. Potem pa je izluščiti še minimalni nabor podatkov, ki se bodo zapisovali v SEPA shemo. Vse to je bilo ZAME največji problem. Poleg tega je večni problem vložek v osvajanje novega znanja (kar XML orodja so ) proti malo več dela z obstoječim znanjem. Glede na to, da z XML ne delamo prav veliko, smo šli po liniji najmanjšega odpora. Končno generiranje XML je bilo za nas pi_kin dim proti prej naštetemu.

Se pa globoko strinjam, da je klofanje tagov in vse v zvezi s tem duhamorno in človeka nevredno. Zato me prav veseli, da ste ponudili pomoč (ne, res, brez sarakzma ). Žal pa sem do vikenda zaseden z drugimi stvarmi zato se ne bom mogle ravno aktivno vključiti v to temo. Povrhu vsega pa je za kreiranje XML zadolžen moj sodelavec (ki pa je bolj dopustniški) in se jaz ne bom prav globoko spuščal.

Ampak, kot je rekel Mr-X, prav lepo je videti, ko se forum malo zagreje.

Če pa ima kdo od mladcev (pa ne starca ala Gabr in runner, da o meni ne govorimo ) čas čez vikend (pa saj bo menda dež), pa lahko da predlog na osnovi SimpleStorage ali gpFluentXml. Oboje si bom sam ogledal drug teden, resno.

LP in na zdravje vsem skupaj!
A s ti tut not padu ?

Uporabniški avatar
gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

TKDIS bomo opustili, kaj namesto njega ?

Odgovor Napisal/-a gabr » 22.07.2010 14:00:52

Luštkan builder. Všeč sintaksa.

riko
Prispevkov: 444
Pridružen: 25.02.2004 12:40:57

TKDIS bomo opustili, kaj namesto njega ?

Odgovor Napisal/-a riko » 22.07.2010 16:46:24

Zakaj pa bi kompliciral, naredi se lepo preprost format string pa je vse narejeno ? :o

Vsi tile "parserji" so zelo malo vredni, dokler mi ne zna runtime razreda in liste tega razreda naredit iz XSD-ja
potem pa jst lepo dodajam in polnim property-je in na koncu pokličem proceduro, ki naredi XLS. :roll:

Aj de majstori može li to Delphi 7 na više ? :o

Uporabniški avatar
Runner
Prispevkov: 1079
Pridružen: 03.02.2005 12:05:25

TKDIS bomo opustili, kaj namesto njega ?

Odgovor Napisal/-a Runner » 22.07.2010 16:56:51

@riko

Vzemi OmniXML ki že ima unit, ki ti omogoča da runtime objekt shraniš v XML ali ga iz njega nazaj naložiš. Dela pa samo nad published properties, ker je RTTI pač takrat bil bolj ubog.
Jaz imam podporo za adapterje v SimpleStorage, ki pa seveda niso avtomatika in moraš sam napisati kodo za serializacijo / deserializacijo.

Imam pa v planu spravit noter ravno to preko novega RTTI-ja in attributov za kontrolo kaj se serializira. Ampak to bo seveda 2010 only.

Drugače pa tega da parserji niso kaj dosti vredni sploh ne bom komentiral. Zdaj mi samo še povej da bo tudi bral tako da boš enostavno sam parsal XML ker je itak lažje. Drugače pa lahko brez problema narediva test. Zapisala bova par različnih podatkov v XML, med njimi tudi binarne in še kaj zanimivega, ker bi res rad videl tvojo kodo ki bo tole spravila v XML.
Mimogrede parserji ti tudi zagotavljajo sintaktično pravilnost XML-ja, kar ti "putom ruke" metoda pač ne.

cLuBbY
Prispevkov: 58
Pridružen: 11.07.2007 09:17:39

TKDIS bomo opustili, kaj namesto njega ?

Odgovor Napisal/-a cLuBbY » 28.07.2010 07:21:03

O ja tole bo še zanimivo, naštudirat SEPA dokumentacijo potem pa knjižnico napisat, ki bo delala tako kot treba uvoze/izvoze. Mislim da se bom lotil s kombinacijo OmniXML in SimpleStorage vsega skupaj. Mislim da lahko pričakujete v kratkem da bo tale tema močno obiskana in oblegana z vprašanji :D
Kar se tiče elektronske izmenjave se bo treba tudi na tole obrnit: ZbsXML
Tudi UPN nam bo povzročil nekaj sivih las.
Bo še zanimiva jesen vsekakor... :D

Aja... pa hvala za nekaj začetnih informacij.

Uporabniški avatar
Runner
Prispevkov: 1079
Pridružen: 03.02.2005 12:05:25

TKDIS bomo opustili, kaj namesto njega ?

Odgovor Napisal/-a Runner » 28.07.2010 12:48:43

Mislim da se bom lotil s kombinacijo OmniXML in SimpleStorage vsega skupaj. Mislim da lahko pričakujete v kratkem da bo tale tema močno obiskana in oblegana z vprašanji :D
Ni problema, samo vprašajte :)

yuhuhu
Prispevkov: 19
Pridružen: 25.02.2005 09:54:31

Re: TKDIS bomo opustili, kaj namesto njega ?

Odgovor Napisal/-a yuhuhu » 04.12.2010 08:43:30

napačen odgovor, nisem prej videl vseh post-ov.

TonyCaker
Prispevkov: 312
Pridružen: 27.09.2003 18:33:35

Re: TKDIS bomo opustili, kaj namesto njega ?

Odgovor Napisal/-a TonyCaker » 16.02.2012 12:21:50

Moj problem: zafrkavam se z OmniXL, vendar mi gre brez navodil in bolj konkretnih primerov malo za nohte. Kreiranje objekta in včitavanje XML iz datoteke ni problem, niti parsanje "glave" oz. splošnega dela podatkov, glej spodaj.

Koda: Izberi vse

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://pbspikanet.pbs.si/ZBSXsl/zbsXML_izpisek.xsl"?>
<cd:Document xmlns="http://www.zbs-giz.si/Schemas/2006/ZBSxml/2.2" xmlns:cd="http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0
..\ZbsCreaDoc.xsd">
<cd:Data>
<cd:DataFormat>
<cd:MimeType>text/xml</cd:MimeType>
</cd:DataFormat>
<cd:Content>
<cd:EmbeddedData>
<Paket>
<VodilniZapis>
<StevilkaRacunaNalogodajalca>SI2000099999999</StevilkaRacunaNalogodajalca>
<StevilkaPaketa>386081</StevilkaPaketa>
<DatumPaketa>2011-11-29</DatumPaketa>
</VodilniZapis>
<Izpiski>
<Izpisek>
<GlavaIzpiska>
<StevilkaIzpiska>00156</StevilkaIzpiska>
<KodaSWIFT>PBSLSI22</KodaSWIFT>
<StevilkaRacunaNalogodajalca>SI2000099999999</StevilkaRacunaNalogodajalca>
<OznakaValute>EUR</OznakaValute>
<ZnesekZacetnoStanje>738.52</ZnesekZacetnoStanje>
<ZnesekKoncnoStanje>822.80</ZnesekKoncnoStanje>
<SkupajVBreme>
<Znesek>179.84</Znesek>
<SteviloTransakcij>000003</SteviloTransakcij>
</SkupajVBreme>
<SkupajVDobro>
<Znesek>264.12</Znesek>
<SteviloTransakcij>000001</SteviloTransakcij>
</SkupajVDobro>
<DatumZacetkaObdobja>2011-11-29</DatumZacetkaObdobja>
<DatumKoncaObdobja>2011-11-29</DatumKoncaObdobja>
<DatumPredhodnegaIzpiska>2011-11-25</DatumPredhodnegaIzpiska>
</GlavaIzpiska>
Zatakne pa se pri prometnih podatkih oz. postavkah. Nekako ne najdem pravega recepta (childs, siblings). Zgled prometnih podatkov je spodaj (malo sem jih uredil, ).

Koda: Izberi vse

<Promet>
  <PostavkaPrometa>
    <ReferencnaOznakaNalogaNalogodajalca>00189994-015726</ReferencnaOznakaNalogaNalogodajalca>
    <ReferencnaOznakaNalogaBanke>009693312</ReferencnaOznakaNalogaBanke>
    <PodatkiONalogodajalcu>
      <Nalogodajalec>
        <Naziv>KUPEC D.O.O.,</Naziv>
        <Naslov>KRANJCEVA ULICA 22</Naslov>
        <Naslov1>LJUBLJANA</Naslov1>
        <Drzava>SLO</Drzava>
        <StevilkaRacuna>029224411287303</StevilkaRacuna>
        <KodaSWIFT></KodaSWIFT>
      </Nalogodajalec>
    </PodatkiONalogodajalcu>

    <PodatkiONakazilu>
      <StrukturiranaReferenca>
        <Referenca>SI00108</Referenca>
        <DodatenOpisNamena>X</DodatenOpisNamena>
      </StrukturiranaReferenca>
    </PodatkiONakazilu>

    <ZnesekPlacila>
      <Znesek>264.12</Znesek>
      <OznakaValute>EUR</OznakaValute>
    </ZnesekPlacila>
    <IndikatorKnjizbe>2</IndikatorKnjizbe>
    <Znesek>
      <Znesek>264.12</Znesek>
      <OznakaValute>EUR</OznakaValute>
    </Znesek>
    <KodaEksterna></KodaEksterna>
    <DatumValute>2011-11-29</DatumValute>
    <DatumKnjizenja>2011-11-29</DatumKnjizenja>
    <VrstaPosla>A3011</VrstaPosla>
    <VrstaPrometa></VrstaPrometa>
  </PostavkaPrometa>

  <PostavkaPrometa>
    <ReferencnaOznakaNalogaNalogodajalca>0015116-00637</ReferencnaOznakaNalogaNalogodajalca>
    <ReferencnaOznakaNalogaBanke>009668100</ReferencnaOznakaNalogaBanke>
    <PodatkiOPrejemniku>
      <Prejemnik>
        <Naziv>DOBAVITELJ D.O.O.</Naziv>
        <Naslov>LJUBLJANSKA CESTA 001</Naslov>
        <Naslov1>KAMNIK</Naslov1>
        <Drzava>SLO</Drzava>
        <StevilkaRacuna>023049910913379</StevilkaRacuna>
        <KodaSWIFT></KodaSWIFT>
      </Prejemnik>
    </PodatkiOPrejemniku>
    <PodatkiONakazilu>
      <StrukturiranaReferenca>
        <Referenca>SI002011-10066-11735</Referenca>
        <DodatenOpisNamena>LINKSYS ROUTER RN.ŠT.</DodatenOpisNamena>
      </StrukturiranaReferenca>
    </PodatkiONakazilu>

    <ZnesekPlacila>
      <Znesek>47.20</Znesek>
      <OznakaValute>EUR</OznakaValute>
    </ZnesekPlacila>
    <IndikatorKnjizbe>1</IndikatorKnjizbe>
    <Znesek>
      <Znesek>47.20</Znesek>
      <OznakaValute>EUR</OznakaValute>
    </Znesek>
    <KodaEksterna></KodaEksterna>
    <DatumValute>2011-11-29</DatumValute>
    <DatumKnjizenja>2011-11-29</DatumKnjizenja>
    <VrstaPosla>A3011</VrstaPosla>
    <VrstaPrometa></VrstaPrometa>
  </PostavkaPrometa>
</Promet>
</Izpisek>
</Izpiski>
</Paket>
</cd:EmbeddedData>
</cd:Content>
</cd:Data>
</cd:Document>
A mi da kakšna dobra duša konkretno rešitev za parsanje "Promet"-a iz zgornjega primera z OmniXML ali SimpleStorage. Postopek je naslednji:

1. pojdi na prvo postavko prometa
2. odcitaj "IndikatorKnjizbe"
3. ce je IndikatorKnjizbe=1
potem
4. odcitaj "Naziv" in "StevilkaRacuna" iz "PodatkiONalogodajalcu"
sicer
5. odcitaj "Naziv" in "StevilkaRacuna" iz "PodatkiOPrejemniku"
6. odcitaj "Referenca" in "DodatenOpisNamena"
7. odcitaj "Znesek" in "Valuta"
8. zapisi v bazo // (to znam sicer sam :-)
9. najdi naslednjo postavko prometa
10. ce postavka obstaja
potem
11. GOTO 2 :arrow: :ugeek:
12.stop

Odgovori