2009-03-22 10 views
1

Ich analysiere eine XML-Datei und speichert die Ergebnisse in einem Datensatz, aber habe einige Probleme.Speichern von Ergebnissen in einem Datensatz Problem

Im Versuch, die Ergebnisse zu speichern (Inhalt meiner XML-Tags) in die Felder meiner Platten ..

Mein Rekord (im Moment ist es nur 1 Satz von XML-Elementen). Ich denke, dass der Parser.curconten das Problem verursacht ...

Type 

TXMLAlert=Record 
alert, desc, action:string; 
end; 

Var 
MyXMLAlert:TXMLAlert; 

MyXMLAlert.alert:=Parser.CurContent 
MyXMLAlert.desc:=Parser.CurContent 
MyXMLAlert.action:=Parser.CurContent 

Das folgende ist mein Parser-Code;

procedure ProcessXML(); 
var 
    Parser : TXmlParser; 
    rule, alert: string; 
    i:integer; 
    memo1:Tmemo; 


begin 
    Parser := TXmlParser.Create; 
    Parser.Normalize := TRUE; 
    Parser.LoadFromFile ('c:\parser.xml'); 
    Parser.StartScan; 

    while Parser.Scan do 
    case Parser.CurPartType of 
    ptStartTag, 
    ptEmptyTag : Form1.Memo1.Lines.Add ('New Element: ' + Parser.CurName); 
    ptContent : Form1.Memo1.Lines.Add ('Content of Element ' + 
    Parser.Curname + ':' + Parser.CurContent); 
     end; 
    Parser.Free; 
end; 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
    ProcessXML(); 
end; 

end. 

Programm-Parser in Ordnung und der Inhalt von Tags in memo1 angezeigt ... Irgendwelche Ideen, warum der Datensatz nicht die Ergebnisse von Inhalten Abholung? Danke, Lazerspewpew

Antwort

1

Es sieht nicht so aus, wie Sie Scan zwischen jedem Aufruf CurContent in Ihrem Datensatz Code aufruf sind, so dass Sie durch die Eingabe nicht wirklich voranbringen. Es sieht auch nicht so aus, als würde Ihr Datensatzcode die Start- und End-Tags überspringen, so wie Sie den Memo-Code verwenden. In diesem Fall kann ich nicht sicher sein, ob Sie die gleichen Einstellungen in Ihrem Datensatz vornehmen, wie Sie es in Ihrem Memo-Code tun. An dem Punkt, an dem Ihr Datensatzcode ausgeführt wird, bezieht sich Parser auf eine gültige TXmlParser Instanz, die bereits Daten aus einer Datei geladen hat? Hat es schon angefangen zu scannen?

Die zufällige Einrückung und die verschiedenen unbenutzten Variablen machen es schwer, darauf zu vertrauen, dass wir tatsächlich Code sehen, der das von Ihnen beschriebene Problem verursacht.

Was macht die Memo-Kontrolle bekommen? (Kopieren und einfügen.) Und was erhält der Datensatz anstelle dessen, was Sie erwartet haben?