delphi 2010 can't read xml node -


i using delphi 2010 , txmldocument. have xml this:

<?xml version="1.0" encoding="utf-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="http://www.xxxxx"?> <izdaniracunenostavni xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="http://www.xxxxxxx">   <racun id="data">     <glavaracuna>       <vrstaracuna>380</vrstaracuna>       <stevilkaracuna>420-16</stevilkaracuna>       <funkcijaracuna>9</funkcijaracuna>     </glavaracuna>     <lokacije>       <vrstalokacije>91</vrstalokacije>       <nazivlokacije>novo mesto</nazivlokacije>     </lokacije>     <valuta>       <vrstavaluteracuna>2</vrstavaluteracuna>       <kodavalute>eur</kodavalute>     </valuta>     <referencnidokumenti vrstadokumenta="on">       <stevilkadokumenta>ni podano</stevilkadokumenta>       <datumdokumenta>2016-06-03t00:00:00.000</datumdokumenta>     </referencnidokumenti>     <referencnidokumenti vrstadokumenta="aak">       <stevilkadokumenta>268,269/d</stevilkadokumenta>       <datumdokumenta>2016-06-03t00:00:00.000</datumdokumenta>     </referencnidokumenti>     <referencnidokumenti vrstadokumenta="aab">       <stevilkadokumenta>ni podano</stevilkadokumenta>       <datumdokumenta>2016-06-03t00:00:00.000</datumdokumenta>     </referencnidokumenti>     <podatkipodjetja>       <nazivnaslovpodjetja>         <vrstapartnerja>ii</vrstapartnerja>         <identifikacijapartnerja>           <stevilkapartnerja>9999</stevilkapartnerja>           <agencija>91</agencija>         </identifikacijapartnerja>         <nazivpartnerja>           <nazivpartnerja1>xxxxx</nazivpartnerja1>           <nazivpartnerja2 />           <nazivpartnerja3 />           <nazivpartnerja4 />         </nazivpartnerja>         <ulica>           <ulica1>xxxxx</ulica1>           <ulica2 />           <ulica3 />           <ulica4 />         </ulica>         <kraj>xxxxx</kraj>         <nazivdrzave>slovenija</nazivdrzave>         <postnastevilka>8000</postnastevilka>         <kodadrzave>si</kodadrzave>       </nazivnaslovpodjetja>       <financnipodatkipodjetja>         <tipinstitucije>rb</tipinstitucije>         <bancniracun>           <stevilkabancnegaracuna>xxxx</stevilkabancnegaracuna>           <nazivbanke1>xxxx</nazivbanke1>           <nazivbanke2 />         </bancniracun>         <kodadrzavebanke>si</kodadrzavebanke>       </financnipodatkipodjetja>       <financnipodatkipodjetja>         <tipinstitucije>rb</tipinstitucije>         <bancniracun>           <stevilkabancnegaracuna>xxxx</stevilkabancnegaracuna>           <nazivbanke1>xxxxx</nazivbanke1>           <nazivbanke2 />         </bancniracun>         <kodadrzavebanke>si</kodadrzavebanke>       </financnipodatkipodjetja>       <referencnipodatkipodjetja>         <vrstapodatkapodjetja>va</vrstapodatkapodjetja>         <podatekpodjetja>xxxx</podatekpodjetja>       </referencnipodatkipodjetja>       <referencnipodatkipodjetja>         <vrstapodatkapodjetja>gn</vrstapodatkapodjetja>         <podatekpodjetja>1358120</podatekpodjetja>       </referencnipodatkipodjetja>       <referencnipodatkipodjetja>         <vrstapodatkapodjetja>xa</vrstapodatkapodjetja>         <podatekpodjetja>1/04065/00</podatekpodjetja>       </referencnipodatkipodjetja>       <kontaktipodjetja>         <komunikacije>           <stevilkakomunikacije>xxxxx</stevilkakomunikacije>           <vrstakomunikacije>te</vrstakomunikacije>         </komunikacije>         <komunikacije>           <stevilkakomunikacije>xxxxx</stevilkakomunikacije>           <vrstakomunikacije>fx</vrstakomunikacije>         </komunikacije>         <komunikacije>           <stevilkakomunikacije />           <vrstakomunikacije>em</vrstakomunikacije>         </komunikacije>       </kontaktipodjetja>     </podatkipodjetja>     <podatkipodjetja>       <nazivnaslovpodjetja>         <vrstapartnerja>by</vrstapartnerja>         <identifikacijapartnerja>           <stevilkapartnerja>0549</stevilkapartnerja>           <agencija>91</agencija>         </identifikacijapartnerja>         <nazivpartnerja>           <nazivpartnerja1>xxxx</nazivpartnerja1>           <nazivpartnerja2>xxxx</nazivpartnerja2>           <nazivpartnerja3 />           <nazivpartnerja4 />         </nazivpartnerja>         <ulica>           <ulica1>xxxx</ulica1>           <ulica2 />           <ulica3 />           <ulica4 />         </ulica>         <kraj>xxx</kraj>         <nazivdrzave>slovenija</nazivdrzave>         <postnastevilka>8000</postnastevilka>         <kodadrzave>si</kodadrzave>       </nazivnaslovpodjetja>       <financnipodatkipodjetja>         <tipinstitucije>rb</tipinstitucije>         <bancniracun>           <stevilkabancnegaracuna>xxxx</stevilkabancnegaracuna>           <nazivbanke1 />           <nazivbanke2 />         </bancniracun>         <kodadrzavebanke>si</kodadrzavebanke>       </financnipodatkipodjetja>       <referencnipodatkipodjetja>         <vrstapodatkapodjetja>va</vrstapodatkapodjetja>         <podatekpodjetja>xxxxx</podatekpodjetja>       </referencnipodatkipodjetja>       <referencnipodatkipodjetja>         <vrstapodatkapodjetja>gn</vrstapodatkapodjetja>         <podatekpodjetja>xxxx</podatekpodjetja>       </referencnipodatkipodjetja>     </podatkipodjetja>     <podatkipodjetja>       <nazivnaslovpodjetja>         <vrstapartnerja>iv</vrstapartnerja>         <identifikacijapartnerja>           <stevilkapartnerja>0549</stevilkapartnerja>           <agencija>91</agencija>         </identifikacijapartnerja>         <nazivpartnerja>           <nazivpartnerja1>xxxx</nazivpartnerja1>           <nazivpartnerja2>xxxx</nazivpartnerja2>           <nazivpartnerja3 />           <nazivpartnerja4 />         </nazivpartnerja>         <ulica>           <ulica1>xxxx</ulica1>           <ulica2 />           <ulica3 />           <ulica4 />         </ulica>         <kraj>xxxx</kraj>         <nazivdrzave>slovenija</nazivdrzave>         <postnastevilka>8000</postnastevilka>         <kodadrzave>si</kodadrzave>       </nazivnaslovpodjetja>       <financnipodatkipodjetja>         <tipinstitucije>rb</tipinstitucije>         <bancniracun>           <stevilkabancnegaracuna>xxxxx</stevilkabancnegaracuna>           <nazivbanke1 />           <nazivbanke2 />         </bancniracun>         <kodadrzavebanke>si</kodadrzavebanke>       </financnipodatkipodjetja>       <referencnipodatkipodjetja>         <vrstapodatkapodjetja>va</vrstapodatkapodjetja>         <podatekpodjetja>xxxxx</podatekpodjetja>       </referencnipodatkipodjetja>       <referencnipodatkipodjetja>         <vrstapodatkapodjetja>gn</vrstapodatkapodjetja>         <podatekpodjetja>5198984000</podatekpodjetja>       </referencnipodatkipodjetja>       <kontaktipodjetja>         <komunikacije>           <stevilkakomunikacije>xxxxxx</stevilkakomunikacije>           <vrstakomunikacije>te</vrstakomunikacije>         </komunikacije>         <komunikacije>           <stevilkakomunikacije />           <vrstakomunikacije>fx</vrstakomunikacije>         </komunikacije>         <komunikacije>           <stevilkakomunikacije />           <vrstakomunikacije>em</vrstakomunikacije>         </komunikacije>       </kontaktipodjetja>     </podatkipodjetja>     <postavkeracuna>       <postavka>         <stevilkavrstice>1</stevilkavrstice>       </postavka>       <dodatnaidentifikacijaartikla>         <vrstapodatkaartikla>5</vrstapodatkaartikla>         <stevilkaartikladodatna>0000</stevilkaartikladodatna>         <vrstakodeartikladodatna>sa</vrstakodeartikladodatna>       </dodatnaidentifikacijaartikla>       <opisiartiklov>         <kodaopisaartikla>f</kodaopisaartikla>         <opisartikla>           <vrstaartikla>ser</vrstaartikla>           <opisartikla1>tisk blokcev "Šmarjeta" zelen, 100-</opisartikla1>         </opisartikla>       </opisiartiklov>       <kolicinaartikla>         <vrstakolicine>47</vrstakolicine>         <kolicina>2</kolicina>         <enotamere>pce</enotamere>       </kolicinaartikla>       <zneskipostavke>         <vrstazneskapostavke>38</vrstazneskapostavke>         <znesekpostavke>34.16</znesekpostavke>       </zneskipostavke>       <zneskipostavke>         <vrstazneskapostavke>66</vrstazneskapostavke>         <znesekpostavke>28</znesekpostavke>       </zneskipostavke>       <zneskipostavke>         <vrstazneskapostavke>203</vrstazneskapostavke>         <znesekpostavke>28</znesekpostavke>       </zneskipostavke>       <cenapostavke>         <vrstacene>aaa</vrstacene>         <cena>14</cena>       </cenapostavke>       <cenapostavke>         <vrstacene>aab</vrstacene>         <cena>14</cena>       </cenapostavke>       <referencnidokumentipostavke>         <vrstadokumentapostavke>on</vrstadokumentapostavke>         <stevilkadokumentapostavke />       </referencnidokumentipostavke>       <referencnidokumentipostavke>         <vrstadokumentapostavke>aak</vrstadokumentapostavke>         <stevilkadokumentapostavke>268,269/d:1</stevilkadokumentapostavke>       </referencnidokumentipostavke>       <referencnidokumentipostavke>         <vrstadokumentapostavke>aab</vrstadokumentapostavke>         <stevilkadokumentapostavke />       </referencnidokumentipostavke>       <davkipostavke>         <davkinapostavki>           <vrstadavkapostavke>vat</vrstadavkapostavke>           <odstotekdavkapostavke>22</odstotekdavkapostavke>         </davkinapostavki>         <zneskidavkovpostavke>           <vrstazneskadavkapostavke>124</vrstazneskadavkapostavke>           <znesek>6.16</znesek>         </zneskidavkovpostavke>         <zneskidavkovpostavke>           <vrstazneskadavkapostavke>125</vrstazneskadavkapostavke>           <znesek>28</znesek>         </zneskidavkovpostavke>       </davkipostavke>       <odstotkipostavk>         <identifikator>a</identifikator>         <vrstaodstotkapostavke>1</vrstaodstotkapostavke>         <odstotekpostavke>0</odstotekpostavke>         <vrstazneskaodstotka>204</vrstazneskaodstotka>         <znesekodstotka>0</znesekodstotka>       </odstotkipostavk>     </postavkeracuna>     <postavkeracuna>       <postavka>         <stevilkavrstice>2</stevilkavrstice>       </postavka>       <dodatnaidentifikacijaartikla>         <vrstapodatkaartikla>5</vrstapodatkaartikla>         <stevilkaartikladodatna>0000</stevilkaartikladodatna>         <vrstakodeartikladodatna>sa</vrstakodeartikladodatna>       </dodatnaidentifikacijaartikla>       <opisiartiklov>         <kodaopisaartikla>f</kodaopisaartikla>         <opisartikla>           <vrstaartikla>ser</vrstaartikla>           <opisartikla1>samolepilne etikete (različne)</opisartikla1>         </opisartikla>       </opisiartiklov>       <kolicinaartikla>         <vrstakolicine>47</vrstakolicine>         <kolicina>2600</kolicina>         <enotamere>pce</enotamere>       </kolicinaartikla>       <zneskipostavke>         <vrstazneskapostavke>38</vrstazneskapostavke>         <znesekpostavke>168.12</znesekpostavke>       </zneskipostavke>       <zneskipostavke>         <vrstazneskapostavke>66</vrstazneskapostavke>         <znesekpostavke>137.8</znesekpostavke>       </zneskipostavke>       <zneskipostavke>         <vrstazneskapostavke>203</vrstazneskapostavke>         <znesekpostavke>137.8</znesekpostavke>       </zneskipostavke>       <cenapostavke>         <vrstacene>aaa</vrstacene>         <cena>0.053</cena>       </cenapostavke>       <cenapostavke>         <vrstacene>aab</vrstacene>         <cena>0.053</cena>       </cenapostavke>       <referencnidokumentipostavke>         <vrstadokumentapostavke>on</vrstadokumentapostavke>         <stevilkadokumentapostavke />       </referencnidokumentipostavke>       <referencnidokumentipostavke>         <vrstadokumentapostavke>aak</vrstadokumentapostavke>         <stevilkadokumentapostavke>268,269/d:2</stevilkadokumentapostavke>       </referencnidokumentipostavke>       <referencnidokumentipostavke>         <vrstadokumentapostavke>aab</vrstadokumentapostavke>         <stevilkadokumentapostavke />       </referencnidokumentipostavke>       <davkipostavke>         <davkinapostavki>           <vrstadavkapostavke>vat</vrstadavkapostavke>           <odstotekdavkapostavke>22</odstotekdavkapostavke>         </davkinapostavki>         <zneskidavkovpostavke>           <vrstazneskadavkapostavke>124</vrstazneskadavkapostavke>           <znesek>30.32</znesek>         </zneskidavkovpostavke>         <zneskidavkovpostavke>           <vrstazneskadavkapostavke>125</vrstazneskadavkapostavke>           <znesek>137.8</znesek>         </zneskidavkovpostavke>       </davkipostavke>       <odstotkipostavk>         <identifikator>a</identifikator>         <vrstaodstotkapostavke>1</vrstaodstotkapostavke>         <odstotekpostavke>0</odstotekpostavke>         <vrstazneskaodstotka>204</vrstazneskaodstotka>         <znesekodstotka>0</znesekodstotka>       </odstotkipostavk>     </postavkeracuna>     <povzetekdavkovracuna>       <davkiracuna>         <vrstadavka>vat</vrstadavka>         <odstotekdavka>22</odstotekdavka>       </davkiracuna>       <zneskidavkov>         <vrstazneskadavka>125</vrstazneskadavka>         <znesekdavka>165.8</znesekdavka>       </zneskidavkov>       <zneskidavkov>         <vrstazneskadavka>124</vrstazneskadavka>         <znesekdavka>36.48</znesekdavka>       </zneskidavkov>     </povzetekdavkovracuna>     <povzetekzneskovracuna>       <zneskiracuna>         <vrstazneska>9</vrstazneska>         <znesekracuna>202.28</znesekracuna>       </zneskiracuna>       <skliczaplacilo>         <sklicplacila>pq</sklicplacila>         <stevilkasklica>si010050409-0042016-13</stevilkasklica>       </skliczaplacilo>     </povzetekzneskovracuna>   </racun>   <ds:signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">     <ds:signedinfo>       <ds:canonicalizationmethod algorithm="http://www.w3.org/tr/2001/rec-xml-c14n-20010315" />       <ds:signaturemethod algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />       <ds:reference uri="">         <ds:transforms>           <ds:transform algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />           <ds:transform algorithm="http://www.w3.org/tr/2001/rec-xml-c14n-20010315" />         </ds:transforms>         <ds:digestmethod algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />         <ds:digestvalue>nuggbc3o7pd86rn9rxaxitxqhvs=</ds:digestvalue>       </ds:reference>     </ds:signedinfo>     <ds:signaturevalue>xkgtc</ds:signaturevalue>     <ds:keyinfo>       <ds:x509data>         <ds:x509certificate>mii</ds:x509certificate>       </ds:x509data>     </ds:keyinfo>   </ds:signature> </izdaniracunenostavni> 

i can read first postavkeracuna/postavka/stevilkavrstice node. don't how read second node. have tried examples google, nothing has worked. don't know how read values in nodes have same name.

i'm use code:

form155.xmldocument1.loadfromfile(edit1.text); doc := form155.xmldocument1;  x := 0 doc.childnodes.nodes['izdaniracunenostavni'].childnodes.count - 1 begin   racunchilds := doc.childnodes.nodes['izdaniracunenostavni'].childnodes[x];    if racunchilds.nodename = 'racun'   begin     form2.racuni_izdani1.append;     form2.racuni_izdani1zap_stevilka.value := zaporedna_stevilka + 1;      glavaracuna_node := racunchilds.childnodes.nodes['glavaracuna'];     form2.racuni_izdani1st_racuna.value := glavaracuna_node.childnodes.nodes['stevilkaracuna'].nodevalue;      datumiracuna_node := racunchilds.childnodes.nodes['datumiracuna'];     datums := datumiracuna_node.childnodes.nodes['datumracuna'].nodevalue;     letos := copy(datums,1,4);     mesecs := copy(datums,6,2);     dans := copy(datums,9,2);     datumskupaj := dans + '.'+ mesecs + '.' + letos;     form2.racuni_izdani1datum_racuna.value := strtodate(datumskupaj);      placilnipogoji_node := racunchilds.childnodes.nodes['placilnipogoji'];     placilniroki_node := placilnipogoji_node.childnodes.nodes['placilniroki'];     datums := placilniroki_node.childnodes.nodes['datum'].nodevalue;     letos := copy(datums,1,4);     mesecs := copy(datums,6,2);     dans := copy(datums,9,2);     datumskupaj := dans + '.'+ mesecs + '.' + letos;     form2.racuni_izdani1datum_valute.value := strtodate(datumskupaj);      referencnidokumenti_node := racunchilds.childnodes.nodes[11];     form2.racuni_izdani1st_dobavnice.value := referencnidokumenti_node.childnodes.nodes['stevilkadokumenta'].nodevalue;     datums := referencnidokumenti_node.childnodes.nodes['datumdokumenta'].nodevalue;     letos := copy(datums,1,4);     mesecs := copy(datums,6,2);     dans := copy(datums,9,2);     datumskupaj := dans + '.'+ mesecs + '.' + letos;     form2.racuni_izdani1datum_dobavnice.value := strtodate(datumskupaj);      podatkipodjetja_node := racunchilds.childnodes.nodes[14];     nazivnaslovpodjetja_node :=  podatkipodjetja_node.childnodes.nodes['nazivnaslovpodjetja'];     nazivpartnerja_node := nazivnaslovpodjetja_node.childnodes.nodes['nazivpartnerja'];     form2.racuni_izdani1naziv_partnerja.value := nazivpartnerja_node.childnodes.nodes['nazivpartnerja1'].nodevalue;      povzetekdavkovracuna_node := racunchilds.childnodes.nodes['povzetekdavkovracuna'];     zneskidavkov_node := povzetekdavkovracuna_node.childnodes.nodes['zneskidavkov'];     form2.racuni_izdani1skupaj_brez_ddv.value := zneskidavkov_node.childnodes.nodes['znesekdavka'].nodevalue;      povzetekdavkovracuna_node := racunchilds.childnodes.nodes['povzetekdavkovracuna'];     zneskidavkov_node := povzetekdavkovracuna_node.childnodes.nodes[2];     form2.racuni_izdani1znesek_ddv.value := zneskidavkov_node.childnodes.nodes['znesekdavka'].nodevalue;      povzetekzneskovracuna_node := racunchilds.childnodes.nodes['povzetekzneskovracuna'];     zneskiracuna_node := povzetekzneskovracuna_node.childnodes.nodes['zneskiracuna'];     form2.racuni_izdani1skupaj_z_ddv.value := zneskiracuna_node.childnodes.nodes['znesekracuna'].nodevalue;   end; end; 

when dealing sibling nodes of same name, childnodes.nodes[] property find first matching node. ixmlnode not have functionality find next sibling of same name. have loop through parent node's children manually, looking @ each node's name, eg:

form155.xmldocument1.loadfromfile(edit1.text); doc := form155.xmldocument1;  racunchilds := doc.childnodes['izdaniracunenostavni'].childnodes['racun']; ... := 0 racunchilds.childnodes.count-1 begin   child := racunchilds.childnodes[i];   if child.localname = 'postavkeracuna'   begin     // use child.childnodes['postavka'].childnodes['stevilkavrstice'] needed...   end; end; 

alternatively:

function findsamenamesibling(node: ixmlnode): ixmlnode; var   i: integer;   nodes: ixmlnodelist;   sibling: ixmlnode; begin   result := nil;   if node = nil exit;   nodes := node.parentnode.childnodes;   := nodes.indexof(node)+1 nodes.count-1   begin     sibling := nodes[i];     if (sibling.namespaceuri = node.namespaceuri) ,        (sibling.localname = node.localname)     begin       result := sibling;       exit;     end;   end; end;  ...  form155.xmldocument1.loadfromfile(edit1.text); doc := form155.xmldocument1;  racunchilds := doc.childnodes['izdaniracunenostavni'].childnodes['racun']; ... child := racunchilds.childnodes['postavkeracuna']; while child <> nil begin   // use child.childnodes['postavka'].childnodes['stevilkavrstice'] needed...   child := findsamenamesibling(child); end; 

alternatively, use xpath query instead, if underlying xml dom engine supports xpath, eg:

uses   ..., xml.xmldom;  var   query: idomnodeselect;   nodes: idomnodelist;  ...  form155.xmldocument1.loadfromfile(edit1.text); doc := form155.xmldocument1;  racunchilds := doc.childnodes['izdaniracunenostavni'].childnodes['racun']; ...  if supports(racunchilds.domnode, idomnodeselect, query) begin   nodes := query.selectnodes('postavkeracuna/postavka/stevilkavrstice');   if nodes <> nil   begin     := 0 nodes.length-1     begin       // use nodes[i] needed...     end;   end; end else begin   // code further above ... end; 

Comments

Popular posts from this blog

aws api gateway - SerializationException in posting new Records via Dynamodb Proxy Service in API -

asp.net - Problems sending emails from forum -