你的xml控件从哪儿搞来的???
能不能透露一下?

解决方案 »

  1.   

    http://homepages.borland.com/ccalvert/TechPapers/Delphi/XMLSimple/XMLSimple.html微软自己有XML控件啊,看看Charlie Calvert的讲座吧
      

  2.   

    用delphi6的TXMLDocument空件解析xml文档,生成树型结构
    procedure TForm1.Button5Click(Sender: TObject);
    begin
         opendialog1.InitialDir := extractfilepath(application.ExeName);
         if opendialog1.Execute then
           begin
               xmldoc.LoadFromFile(opendialog1.FileName );
               treeview1.Items.Clear ;
               domtotree(xmldoc.DocumentElement ,nil);
               treeview1.FullExpand ;
           end;
    end;procedure tform1.domtotree(xmlnode : ixmlnode; treenode : ttreenode);
    var
      i : integer;
      newtreenode : ttreenode;
      nodetext : string;
      attrnode : ixmlnode;
    begin
       if xmlnode.NodeType = ntcdata then
         begin
            nodetext := xmlnode.NodeName  ;// .NodeName ;
       //     showmessage(xmlnode.text);
            nodetext := nodetext+'='+xmlnode.xml ;        newtreenode:= treeview1.Items.AddChild(treenode,nodetext);        for i:=0 to xmlnode.AttributeNodes.Count -1 do
              begin
                attrnode := xmlnode.AttributeNodes.Nodes[i];
                treeview1.Items.AddChild(newtreenode,'['+attrnode.NodeName +'='+attrnode.text   +']');
              end;        if xmlnode.HasChildNodes then
              for I:=0 to xmlnode.ChildNodes.Count  -1 do
                domtotree(xmlnode.ChildNodes.Nodes[i],newtreenode);   end else
          begin        nodetext := xmlnode.LocalName;//  .NodeName ;
            if xmlnode.IsTextElement then
              nodetext := nodetext+'='+xmlnode.xml ;        newtreenode:= treeview1.Items.AddChild(treenode,nodetext);        for i:=0 to xmlnode.AttributeNodes.Count -1 do
              begin
                attrnode := xmlnode.AttributeNodes.Nodes[i];
                treeview1.Items.AddChild(newtreenode,'['+attrnode.NodeName +'='+attrnode.text   +']');
              end;        if xmlnode.HasChildNodes then
              for I:=0 to xmlnode.ChildNodes.Count  -1 do
                domtotree(xmlnode.ChildNodes.Nodes[i],newtreenode);
              end;end;
      

  3.   

    加入一个treeview1,xmldoc(就是xmldocument),一个opendialog,button
      

  4.   

    上面那个comtotree的precedure可以简化成procedure tform1.domtotree(xmlnode : ixmlnode; treenode : ttreenode);
    var
      i : integer;
      newtreenode : ttreenode;
      nodetext : string;
      attrnode : ixmlnode;
    begin    if xmlnode.NodeType =  ntElement then
          begin
            nodetext := xmlnode.LocalName  ;
            if xmlnode.IsTextElement then
              nodetext := nodetext+'='+xmlnode.Text
              else if xmlnode.ChildNodes.Nodes[0].NodeType=ntcdata then
                  nodetext := nodetext+'='+xmlnode.ChildNodes.Nodes[0].NodeValue ;//        newtreenode:= treeview1.Items.AddChild(treenode,nodetext);        for i:=0 to xmlnode.AttributeNodes.Count -1 do
              begin
                attrnode := xmlnode.AttributeNodes.Nodes[i];
                treeview1.Items.AddChild(newtreenode,'['+attrnode.NodeName +'='+attrnode.text   +']');
              end;        if xmlnode.HasChildNodes then
              for I:=0 to xmlnode.ChildNodes.Count  -1 do
                domtotree(xmlnode.ChildNodes.Nodes[i],newtreenode);
              end;end;