Ich stehe grade komplett auf der Leitung! Ich versuche, eine XML-Datei zu laden und die Daten in eine Struktur zu übertragen. Das Ganze funktioniert bereits mit FB_XmlSrvRead und der Versuch, über die JsonXML zu gehen, dient einem Geschwindigkeitsvergleich da in der Zukunft viele recht groÃe Dateien geladen werden sollen.
Leider fehlt mir das Verständnis für den XMLDomParser wo ich mit der Methode LoadDocumentFromFile die XML lade, was offenbar passiert da sowohl die Startvariable als auch der Rückgabewert zurückgesetzt wird. Allerdings bekomme ich als XML-String nur '<?xml version="1.0"?>', egal was in der Datei steht.
Was übersehe ich?
Anmerkung: GVL.Pos_ar ist das eigentliche Zielarry dessen GröÃe ich hier nur benutze um genügend Speicher zur Verfügung zu stellen.
xmlLength hat am Ende immer den Wert 22, sMessageToParse beinhaltet immer '<?xml version="1.0"?>'.
Wie komme ich an die XML-Daten?
Vielen Dank im Voraus
Leider fehlt mir das Verständnis für den XMLDomParser wo ich mit der Methode LoadDocumentFromFile die XML lade, was offenbar passiert da sowohl die Startvariable als auch der Rückgabewert zurückgesetzt wird. Allerdings bekomme ich als XML-String nur '<?xml version="1.0"?>', egal was in der Datei steht.
Was übersehe ich?
Code:
Var
fbXml : FB_XmlDomParser;
xmlDoc : SXmlNode;
sMessageToParse : T_maxstring;
xmlRootNode : SXmlNode;
loaded : BOOL;
step : INT :=0;
xmlLength : UDINT :=0;
FTloaded : Tc2_Standard.F_TRIG;
End_Var
Code:
sFilePath := 'C:\Temp\test.xml' ;
FTloaded(CLK :=loaded);
CASE step OF
0: IF bstart2 THEN
sMessageToParse := '';
xmlLength := 0;
fbxml.NewDocument();
step := step +1;
END_IF
1:
loaded := fbxml.LoadDocumentFromFile(sFilePath,bstart2);
IF FTloaded.Q THEN
xmlRootNode := fbXml.GetRootNode();
step := step +1;
END_IF
2:
xmlLength := fbxml.CopyDocument(sMessageToParse,SIZEOF(GVL.Pos_ar));
IF xmlLength > 0 THEN
step := 0;
END_IF
END_CASE
xmlLength hat am Ende immer den Wert 22, sMessageToParse beinhaltet immer '<?xml version="1.0"?>'.
Wie komme ich an die XML-Daten?
Vielen Dank im Voraus