2009-03-22 8 views
1

Je suis en train d'analyser un fichier XML et de stocker les résultats dans un enregistrement, mais j'ai des problèmes.Stockage des résultats dans un problème d'enregistrement

Im essayant de stocker les résultats (le contenu de mes balises XML) dans les champs de mon dossier ..

Mon dossier (à l'heure actuelle il y a seulement 1 ensemble d'éléments XML). Je pense que le Parser.curconten est à l'origine du problème ...

Type 

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

Var 
MyXMLAlert:TXMLAlert; 

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

Voici mon code d'analyseur;

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. 

fin de l'analyseur de programme et le contenu des balises est affiché dans memo1 ... Toutes les idées pourquoi le dossier ne ramasse pas les résultats de contenu? Merci, Lazerspewpew

Répondre

1

Il ne ressemble pas à vous appelez Scan entre chaque appel à CurContent dans votre code d'enregistrement, de sorte que vous ne progressera pas réellement à travers l'entrée. Il ne semble pas non plus que votre code d'enregistrement ignore les balises de début et de fin comme votre code de mémo. D'ailleurs, je ne peux pas être sûr que vous faites la même configuration dans votre code d'enregistrement que vous êtes dans votre code mémo. Au point où votre code d'enregistrement s'exécute, est-ce que Parser fait référence à une instance TXmlParser valide qui a déjà chargé des données d'un fichier? A-t-il déjà commencé à numériser? L'indentation hasardeuse et les nombreuses variables inutilisées font qu'il est difficile d'être sûr que nous voyons vraiment du code qui cause le problème que vous décrivez de toute façon.

Qu'est-ce que obtient le contrôle mémo? (Copiez et collez.) Et qu'est-ce que l'enregistrement obtient au lieu de ce que vous attendiez?

Questions connexes