Hallo,
Ich habe hier im Forum und bei Google auch schon gesucht und auch einen vielversprechenden ansatz entdeckt, meine abwandlung davon fördert nur leere Datenfelder im Array zu tage
Aus dieser XML Datei (nen Export aus nem Shopsystem), möchte ich ein paar Daten zur Buchführung herrausfischen, mit ner Messagebox klappt das Prima, nur mit dem Array in dem ich die Daten vor der weiterverarbeitung sammeln will, klappts garnicht, alles leer.
<?xml version='1.0' encoding='utf-8'?>
<Orders>
<Order>
<OrderNumber>2012-1000</OrderNumber>
<CustomerNumber>1000</CustomerNumber>
<Currency>EUR</Currency>
<Language>de</Language>
<Locale>de_DE</Locale>
<TaxArea>EU</TaxArea>
<TaxModel>gross</TaxModel>
<GrandTotal>3.50</GrandTotal>
<TotalBeforeTax>3.50</TotalBeforeTax>
<TotalTax>0.00</TotalTax>
<Addresses>
<BillingAddress>
<FirstName>Kuh</FirstName>
<LastName>Muh</LastName>
<Street>Dfdfd 54</Street>
<Zipcode>66339</Zipcode>
<City>Hamburg</City>
<EMail>kerger@frx.de</EMail>
<Country>DE</Country>
</BillingAddress>
</Addresses>
<LineItems>
<LineItem>
<Id>15-0007</Id>
<Name>Applikation</Name>
<Quantity>1</Quantity>
<OrderUnit>piece</OrderUnit>
<UnitPrice>3.50</UnitPrice>
<Discount>0.00</Discount>
<TotalPrice>3.50</TotalPrice>
<TaxRate>0.19</TaxRate>
<VariationString>Dateiformat</VariationString>
</LineItem>
<LineItemPayment>
<Id>CashInAdvance</Id>
<TotalPrice>0.00</TotalPrice>
<Name>Vorkasse per Überweisung</Name>
</LineItemPayment>
</LineItems>
<CreationDate>2012-07-31T01:30:42</CreationDate>
<ViewedOn>2012-07-31T01:32:18</ViewedOn>
</Order>
<Order>
<OrderNumber>2012-1018</OrderNumber>
<CustomerNumber>1012</CustomerNumber>
<Currency>EUR</Currency>
<Language>de</Language>
<Locale>de_DE</Locale>
<TaxArea>EU</TaxArea>
<TaxModel>gross</TaxModel>
<GrandTotal>10.00</GrandTotal>
<TotalBeforeTax>10.00</TotalBeforeTax>
<TotalTax>0.00</TotalTax>
<Addresses>
<BillingAddress>
<FirstName>MAxi</FirstName>
<LastName>Muster</LastName>
<Street>Derweg 8</Street>
<Zipcode>66466</Zipcode>
<City>Musterbach</City>
<EMail>kerg@gff.de</EMail>
<Country>DE</Country>
</BillingAddress>
</Addresses>
<LineItems>
<LineItem>
<Id>01-0017</Id>
<Name>Hoop</Name>
<Quantity>1</Quantity>
<OrderUnit>piece</OrderUnit>
<UnitPrice>5.00</UnitPrice>
<TotalPrice>5.00</TotalPrice>
<TaxRate>0.19</TaxRate>
<VariationString>Dateiformat: JFF</VariationString>
</LineItem>
<LineItem>
<Id>01-0016</Id>
<Name>Eue3</Name>
<Quantity>1</Quantity>
<OrderUnit>piece</OrderUnit>
<UnitPrice>5.00</UnitPrice>
<TotalPrice>5.00</TotalPrice>
<TaxRate>0.19</TaxRate>
<VariationString>Dateiformat: PDS</VariationString>
</LineItem>
<LineItemPayment>
<Id>CashInAdvance</Id>
<TotalPrice>0.00</TotalPrice>
<Name>Vorkasse per Überweisung</Name>
</LineItemPayment>
</LineItems>
<CreationDate>2012-07-02T13:58:18</CreationDate>
<CustomerComment>Hallo Frau Muster...</CustomerComment>
<ViewedOn>2012-07-31T01:25:26</ViewedOn>
</Order>
</Orders>
Alles anzeigen
Dazu habe ich zuerst das hier probiert:
[autoit]
#include <Array.au3>
#include <_XMLDOMWrapper.au3>
$XML = FileOpenDialog("", @ProgramFilesDir & "\autoit", "XML (*.xml)", 1)
$XMLopen = _XMLFileOpen($XML)
ConsoleWrite("Debug: $iRET = " & $XMLopen & @LF)
$XMLcount = _XmlGetNodeCount("Orders/Order")
For $i = 1 To $XMLcount
$bestellnr = _XMLGetValue("Order[" & $i & "]/OrderNumber")
$summe = _XMLGetValue("Order[" & $i & "]/GrandTotal")
$datum = _XMLGetValue("Order[" & $i & "]/CreationDate")
MsgBox(0,"",$datum[1] & " - " & $bestellnr[1] & " - " & $summe[1])
Next
Das funzt, in der MSGBox kommen die Daten sauber raus.
Damit nicht:
[autoit]
#include <Array.au3>
#include <_XMLDOMWrapper.au3>
$XML = FileOpenDialog("", @ProgramFilesDir & "\autoit", "XML (*.xml)", 1)
$XMLopen = _XMLFileOpen($XML)
ConsoleWrite("Debug: $iRET = " & $XMLopen & @LF)
$XMLcount = _XmlGetNodeCount("Orders/Order")
Dim $arOrders[$XMLcount + 1][3]
$arOrders[0][0] = 'B_Nr'
$arOrders[0][1] = 'Euro'
$arOrders[0][2] = 'Datum'
For $i = 1 To $XMLcount
$arOrders[$i][0] = _XMLGetValue("Order[" & $i & "]/OrderNumber") ;bestellnr
$arOrders[$i][1] = _XMLGetValue("Order[" & $i & "]/GrandTotal") ;gesamtpreis
$arOrders[$i][2] = _XMLGetValue("Order[" & $i & "]/CreationDate") ;bestelldatum
Next
_ArrayDisplay($arOrders)
[/autoit]Kann mir das als einsteiger verständlich erklären warum das nicht funzen will
Danke