1

我正在解析一个 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

4

1 回答 1

1

看起来您并没有在记录代码中的Scan每次调用之间进行调用CurContent,因此您实际上不会推进输入。您的记录代码看起来也不像您的备忘录代码那样跳过开始和结束标签。就此而言,我无法确定您在记录代码中的设置与在备忘录代码中的设置相同。在您的记录代码运行时,是否引用了已从文件加载数据Parser的有效实例?TXmlParser它已经开始扫描了吗?

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

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

于 2009-03-22T14:05:59.570 回答