Autoit XML to Array

11/13/2013 10:50 renovieren#1
Hallo,

ich möchte eine XML Datei auslesen und in ein Autoit Array verwandeln. Derzeit muss ich allerdings aus dem Datensatz mehrere Arrays bauen da ich nicht weiß wie ich mehrere Spalten füllen kann.

Hier ein Beispieldatensatz aus der XML:
Quote:
<xml>
<bestand>
<produkt>Schinken trocken</produkt>
<lager>1</lager>
<preis>3</preis>
</bestand>
<bestand>
<produkt>Schinken feucht</produkt>
<lager>0</lager>
<preis>2</preis>
</bestand>
</xml>
Hier mein Ansatz für mehrere Array´s
PHP Code:
$sData1 BinaryToString(InetRead("http://intern/bestand.php"19))
$sDataprodukt StringRegExp($sData1"\Q<produkt>\E(.+?)\Q</produkt>\E" 3)
$sDatalager StringRegExp($sData1"\Q<lager>\E(.+?)\Q</lager>\E" 3)
$sDatapreis StringRegExp($sData1"\Q<preis>\E(.+?)\Q</preis>\E" 3
Hat jemand eine Idee wie ich in einem Schwung mit den Daten 1 Array statt 3 Arrays befüllen kann?
11/13/2013 17:41 LikeU<3#2
So müssts gehen.
Code:
Dim $codes[0] 
$Data = BinaryToString(InetRead("http://intern/bestand.php", 19)) 
$array = StringSplit($data,@crlf)
For $i = 1 To $array[0] Step 1
$string = _StringBetween($array[$i],">","<")
$codes[$i] =  $string[0]
Next
_ArrayDisplay($codes)
11/13/2013 17:42 alpines#3
Er will ja die Sachen die dadrin stehen in ein Array speichern, da wirst du um 3 Arrays oder 1 2D Array glaube ich nicht rumkommen.
11/13/2013 18:54 de4df1sh#4
So?
Code:
#include <Array.au3>

$Xml = FileRead ("xml.txt")

$Xml = StringReplace ($Xml, @CRLF , "")

$Array = StringRegExp ($Xml, '<produkt>(.*?)</produkt>.*?<lager>(\d*?)</lager>.*?<preis>(\d*?)</preis>', 3)
_ArrayDisplay ($Array)
11/18/2013 14:29 renovieren#5
Quote:
Originally Posted by de4df1sh View Post
So?
Code:
#include <Array.au3>

$Xml = FileRead ("xml.txt")

$Xml = StringReplace ($Xml, @CRLF , "")

$Array = StringRegExp ($Xml, '<produkt>(.*?)</produkt>.*?<lager>(\d*?)</lager>.*?<preis>(\d*?)</preis>', 3)
_ArrayDisplay ($Array)
das Bringt war alles in ein Array aber nicht jedes in eine eigene Spalte sondern nur alle untereinander.

Quote:
Originally Posted by alpines View Post
Er will ja die Sachen die dadrin stehen in ein Array speichern
Genau am liebsten Excellike nur halt als autoit array mit mehreren spalten:

id - produkt - lager - preis
0 - Schinken trocken - 1 - 3
11/18/2013 16:20 alpines#6
Dann speicher einfach das in einem 2D Array oder in mehreren einzelnen Arrays und füg es am Ende in einer Schleife zusammen. Sowas wie:
Code:
Local $aProdukt[2], $aLager[2], $aPreis[2], $aListe[2][3]

; 1 = (1+1=2 -> 2 Anzahl der Produkte[2])

For $i = 0 To 1
	$aListe[$i][0] = $aProdukte[$i]
	$aListe[$i][1] = $aLager[$i]
	$aListe[$i][2] = $aPreis[$i]
Next
Die Methode ist natürlich optimierungsbedürftig sollte aber funktionieren.
11/19/2013 07:57 renovieren#7
Kann ich es denn nicht direkt in ein Array packen?
11/19/2013 16:12 alpines#8
Ich bin mir nicht sicher wie man 1D-Arrays in 2D Arrays speichert.
Deshalb würde ich lieber die For-Schleife nehmen.