将结果存储到记录故障中

时间:2009-03-22 13:39:34

标签: xml delphi parsing pascal record

我正在解析XML文件并将结果存储在记录中,但遇到了一些麻烦。

我试图将结果(我的XML标签的内容)存储到我的记录字段中。

我的记录(目前只有一组XML元素)。我认为Parser.curconten导致问题......

    Type

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

Var
MyXMLAlert:TXMLAlert;

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

以下是我的解析器代码;

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.

编程解析器很好,标签的内容显示在memo1中... 任何想法为什么记录没有取得内容的结果? 谢谢,Lazerspewpew

1 个答案:

答案 0 :(得分:1)

在您的记录代码中每次调用Scan之间,您似乎不会调用CurContent,因此您实际上不会通过输入前进。它也不像您的记录代码以备忘录代码的方式跳过开始和结束标记。就此而言,我无法确定您在记录代码中的任何设置与您在备忘录代码中的设置相同。在您的记录代码运行时,Parser是否指向已从文件加载数据的有效TXmlParser实例?它开始扫描了吗?

偶然的缩进和几个未使用的变量使我们很难确信我们真正看到导致您描述的问题的代码。

备忘录控件的内容是什么? (复制和粘贴。)记录得到什么而不是你期望的?