Hallo
DP,
mit folgender Prozedur möchte ich eine kleine
XML Datei lesen und ein zwei dimensionales array befüllen, um es später in einer anderen
Unit zu verwenden.
Delphi-Quellcode:
Procedure GetMessage(
xml,targetNode:
string;message_array:
array of array of string);
var
xmldoc : IXMLDocument;
root: IXMLNode;
msg_node:IXMLNode;
i: Integer;
x:integer;
s:
string;
begin
//XMLDocument erzeugen und xml-Datei laden
xmlDoc := newXMLDocument;
xmlDoc.LoadFromXML(
xml);
xmlDoc.Active := true;
root := XMLDoc.DocumentElement;
for i := 0
to xmlDoc.ChildNodes[root.NodeName].ChildNodes.Count -1
do
begin
s := xmlDoc.DocumentElement.ChildNodes[i].NodeName;
x := CompareStr(s, targetNode);
if x = 0
then //targetnode Node gefunden
begin
message_array[i,1] := (xmlDoc.DocumentElement.ChildNodes[i].ChildNodes.FindNode('
message').Text);
message_array[i,2] := (xmlDoc.DocumentElement.ChildNodes[i].ChildNodes.FindNode('
type').Text);
message_array[i,3] := (xmlDoc.DocumentElement.ChildNodes[i].ChildNodes.FindNode('
code').Text);
message_array[i,4] := (xmlDoc.DocumentElement.ChildNodes[i].ChildNodes.FindNode('
parameter').Text);
message_array[i,5] := (xmlDoc.DocumentElement.ChildNodes[i].ChildNodes.FindNode('
id').Text);
end;
end;
end;
Ich wollte beide
XML Knoten "displayMessages" und deren Unterbau in ein zweidimensionales array packen, aber der Compiler lässt mich kein mehrdimensionales array als Übergabeparameter der Prozedur erstellen:
Compilerfehler:
Bezeichner erwartet, aber 'ARRAY' gefunden
Procedure GetMessage(xml,targetNode:string;message_array: array of array of string);
Code:
<?
xml version="1.0" encoding="UTF-8"?>
<Model xmlns="http://www.test.de">
<displayMessages>
<message>An error has occurred.</message>
<type>UH</type>
<code>99999</code>
</displayMessages>
<displayMessages>
<message>Something is wrong</message>
<type>UH</type>
<code>999999</code>
<parameter>HALLO_WELT</parameter>
<id>30</id>
</displayMessages>
</Model>
Oder wäre ein Array von Records besser geeignet ?