mojaSymfonia FORUM
https://forum.mix-soft.pl/

xml ItemsList
https://forum.mix-soft.pl/viewtopic.php?f=15&t=8631
Strona 1 z 1

Autor:  zz [ 2018-06-01, 13:17 ]
Tytuł:  xml ItemsList

Dziękuję Rafałowi za pomoc w temacie http://www.forum.mojasymfonia.pl/viewtopic.php?f=15&t=3624
zakładam nowy temat, żeby było czytelniej

pytanie 1, poniżej fragment pliku XML
jak z niego wyciągnąć tekst DOSTAWCA
Kod:
<Forwarder ForwarderId="3004">
<ForwarderAddress AddressId="17149" MatchCode="DOSTAWCA">
<Name>Logistik Polska Sp. z o.o. </Name>
<Street>ul... </Street>
<ZIP>12345</ZIP>
<City>miasto</City>
</ForwarderAddress>
</Forwarder>


pytanie 2, fragment pliku XML
Kod:
<Body>
<InvoiceId>104010</InvoiceId>
...
<InvoiceItems>
<InvoiceItem>
  <DeliveryId>143129</DeliveryId>
  <POCId>586814/01</POCId>
  <Quantity>438</Quantity>
  <Amount>306.74</Amount>
</InvoiceItem>
<InvoiceItem>
...
</InvoiceItem>
...
</InvoiceItems>
</Body>



jak wyciągnąć wartości poszczególnych zapisów w InvoiceItem: Quantity, Amount, ...

Autor:  bongos [ 2018-06-05, 12:27 ]
Tytuł:  Re: xml ItemsList

[1] tak iterujesz po atrybutach, pokombinuj

for a1=0 to a1>l_root.attributes.length-1
print using "%d : %s == %s\n",a1,l_root.attributes.item(a1).name,l_root.attributes.item(a1).value
next a1


[2] kombinuj - jak już złapiesz noda to iteruj po jego dzieciach
a jak w założeniu dzieci mają dzieci to dołóż dodatkową iterację
:-)

np. coś takiego
...
l_cn=l_bn.item(b1).childnodes
c2=l_cn.length-1
for c1=0 to c1>c2
select case lcase(l_cn.item(c1).nodename)
case "tag_z_tagami":
l_dn=l_cn.item(c1).childnodes: d2=l_dn.length-1
for d1=0 to d1>d2
select case lcase(l_dn.item(d1).nodename)
case "pole","inne_pole","kolejne_inne_pole"
..... costam=l_dn.item(d1).text

next d1
...
next c1
...

są bardziej eleganckie rozwiązania ale wiesz na bezrybiu ...

Autor:  zz [ 2018-06-15, 11:40 ]
Tytuł:  Re: xml ItemsList

Robię raport w AMBasic-u i nie chcę 'mieszać'

Kod:
dispatch xml = "Microsoft.XMLDOM"
dispatch xmlItemsList
...
xmlItemsList=xml.getElementsByTagName("InvoiceItems/InvoiceItem")
iItemsCount = xmlItemsList.length
for i...
xmlItem=xmlItemsList.item(i)
message xmlItem.text    // (i mam ciąg znaków całego Item-a)
next i


i właśnie nie wiem jak to zrobić dalej (ChildNodes ?)

Autor:  bongos [ 2018-06-15, 12:34 ]
Tytuł:  Re: xml ItemsList

no jak chcesz polecieć po nodach w ramach item-a to childnodes jak najbardziej
masz powyżej przykład

Autor:  zz [ 2018-06-15, 12:53 ]
Tytuł:  Re: xml ItemsList

zrobiłem tak:

Kod:
xmlQuantityList = xml.getElementsByTagName("InvoiceItem/Quantity")
...
xmlQuantity=xmlQuantityList.item(i)
...
message xmlQuantity.text


i jest OK

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/