起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 190|回复: 10

帮忙看下,什么原因?**

[复制链接]
发表于 2007-9-4 11:11:58 | 显示全部楼层 |阅读模式
procedure TXMLWJCZForm.btnImportClick(Sender: TObject);
var
   xm : TXMLDocument;
   Root : IXMLNode; //指向XML根结点
   Parent_Node: IXMLNode; //指向父结点
   Child_node : IXMLNode; //指向子结点
   code : String;     //银行编码
   name : String;     //开户银行
   account : String;  //银行帐号
   flag : integer;     //是否暂封
begin
     xm :=  TXMLDocument.Create(nil);
     xm.LoadFromFile('D:\常用软件\test.xml');
     xm.Active := true;
     Root := xm.DocumentElement;
     Parent_Node := Root.ChildNodes.First;
     while (Parent_Node<>nil) do
     begin
        Child_node := Parent_Node.ChildNodes.First;
        while (Child_node <> nil) do
        begin
          if Child_node.NodeName = 'code' then  code := Child_node.Text
          else if Child_node.NodeName = 'name' then  name := Child_node.Text
          else if Child_node.NodeName = 'account' then  account := Child_node.Text;
           Dialogs.ShowMessage('银行编码:'+code);
        end;
     end;
end;

问题:运行到Root := xm.DocumentElement; 出错,在Delphi里面是可以实现的,请问什么原因?
回复

使用道具 举报

发表于 2007-9-4 11:58:08 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-4 12:16:40 | 显示全部楼层
No.15  
终于搞清楚了。

TXMLDocument不能用,因为平台是不支持接口的,所以这种用接口的类都不能用!
TXMLIniFile 无法实现这样的格式,已经递交需求, 平台会在以后的版本中完善这部分。

现在有两种方式,楼主可以参考一下:

第一种:在Delphi中实现,然后打包引入到平台使用(注意:不要对平台暴露接口)。

第二种:定义一个inifile文件,把要生成的格式按照字符串写进去。在读这个文件的时候,比较复杂,就需要解析这些字符串。


由 Alice 于 2006-01-11 11:03 最后编辑
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-4 12:17:31 | 显示全部楼层
请问目前2800版本是否一解决?
回复 支持 反对

使用道具 举报

发表于 2007-9-4 14:25:54 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2007-9-4 14:36:33 | 显示全部楼层
我这样写是可以的
=============
procedure TMainForm.Button1Click(Sender: TObject);
var
  xm : IXMLDOMDocument;
  Root : IXMLDOMNode; //指向XML根结点
begin
  xm := ComObj.CreateOleObject('Microsoft.XMLDOM') as IXMLDOMDocument;
  try
    xm.LoadXML(Memo1.Lines.Text);
    Root := xm.documentElement as IXMLDOMNode;
  finally
    xm := nil;
  end;
end;
回复 支持 反对

使用道具 举报

发表于 2007-9-4 14:38:48 | 显示全部楼层
Delphi中执行一下代码也不出错,但是也不返回了
=================
procedure TForm1.Button1Click(Sender: TObject);
var
  xm : TXMLDocument;
  Root : IXMLNode; //指向XML根结点
begin
  xm :=  TXMLDocument.Create(nil);
  try
    xm.LoadFromXML(Memo1.Lines.Text);
    Root := xm.DocumentElement;// as IDOMDocument;
  finally
    xm.Free;
  end;
end;
回复 支持 反对

使用道具 举报

发表于 2007-9-4 14:52:00 | 显示全部楼层
以下代码在平台上也是可以运行的
===================
procedure TMainForm.Button1Click(Sender: TObject);
var
   XMLDocument1:TXMLDocument;
begin
  XMLDocument1:=TXMLDocument.Create(Self);
  with XMLDocument1 do
  begin
    XML.Add('<TransResponse></TransResponse>');
    Active := True;
    Encoding := 'GB2312';

    DocumentElement.AddChild('Version',0).NodeValue := '1.0';
    SaveToFile('c:\test1.xml');
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-4 15:01:33 | 显示全部楼层
那能不能帮我看下一楼的错误是什么问题造成的?
回复 支持 反对

使用道具 举报

发表于 2007-9-4 15:12:18 | 显示全部楼层
我对这些也不熟悉,你看看M$的资料吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-16 00:26 , Processed in 0.038271 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表