Y
yxzyxz
Unregistered / Unconfirmed
GUEST, unregistred user!
现在在做一个xml文件的编辑器,有一个问题,xml的解析,如果不用msxml,而用delphi6中的
xmldocument控件,我发现特别困难,解析xml文件,不能直接得到错误的行数,只能在抛出
的异常信息里找,而且再次执行这段代码异常信息一直是:line;0,
我的代码如下:
try
begin
XMLDocument1.FileName:=OpenDialog.FileName;//栽入xml文件
Memo1.Lines.loadFromFile(OpenDialog.FileName);//在编辑窗口显示
XMLDocument1.Active:=true;//激活,XMLDocument将解析文件,如果xml不和语法
end; //就抛出异常
except
on e:Exception do
begin
Memo1.Lines.Add(e.Message);
strs:=TstringList.Create;
strs.Text:=e.Message;
lineindex:=finderrorlines(strs);//从异常信息里找到错误行的行数
strs.Clear;
for i:=0 to lineindex-2 do
strs.Add(Memo1.Lines);//计算错误行之前的字符个数
startpos:=length(strs.Text);
strs.free;
Memo1.SelStart:=startpos;//选中错误行
Memo1.SelLength:=Length(Memo1.Lines[lineindex-1]);
e.CleanupInstance;
end;
end;
哪位大侠给分析分析
xmldocument控件,我发现特别困难,解析xml文件,不能直接得到错误的行数,只能在抛出
的异常信息里找,而且再次执行这段代码异常信息一直是:line;0,
我的代码如下:
try
begin
XMLDocument1.FileName:=OpenDialog.FileName;//栽入xml文件
Memo1.Lines.loadFromFile(OpenDialog.FileName);//在编辑窗口显示
XMLDocument1.Active:=true;//激活,XMLDocument将解析文件,如果xml不和语法
end; //就抛出异常
except
on e:Exception do
begin
Memo1.Lines.Add(e.Message);
strs:=TstringList.Create;
strs.Text:=e.Message;
lineindex:=finderrorlines(strs);//从异常信息里找到错误行的行数
strs.Clear;
for i:=0 to lineindex-2 do
strs.Add(Memo1.Lines);//计算错误行之前的字符个数
startpos:=length(strs.Text);
strs.free;
Memo1.SelStart:=startpos;//选中错误行
Memo1.SelLength:=Length(Memo1.Lines[lineindex-1]);
e.CleanupInstance;
end;
end;
哪位大侠给分析分析