xml文件是: 
<?xml version="1.0" encoding="gb2312" ?> 
- <menu>
  <file ID="21203383" name="狂乱升华版" singer="Mùsicヤ云ル" hot="21934"   img="http://images.sogua.com/uploadserver/Image/2007/1024/164125359vr0rom55.jpg" url="http://amberyin.sogua.com/mv/view/21203383.htm" /> 
  <file ID="21203558" name="~~~~礼帽舞绣~~~~~~~~" singer="冷月魂" hot="3427" img="http://images.sogua.com/uploadserver/Image/2007/1024/173836796vr0rom55.jpg" url="http://lentyue.sogua.com/mv/view/21203558.htm" /> 
</menu>我想用TXMLDocument 先解析xml, 然后取出menu中file ID ,name ,singer,hot,img,url字段,再把取出的字段在用TIDHttp
把其中的img从网上取回来,再用delphi image控件显示出来,就是做一个链接。希望能给出全部的代码。万分感激!!!急!!

解决方案 »

  1.   

    jpgurl:=copy(sxml,pos('img="')+1,100)
    这个再自已把后面的去掉var
        MemStm:TMemoryStream;begin
    memstm:=TMemoryStream.Create;
    idhttp.get(jpgurl,MemStm);
     MemStm.SaveToFile('');//里面是imgfilename
    image1.Picture.LoadFromFile();
    end;
    it s ok
      

  2.   

    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
      IdTCPClient, IdHTTP, msxml, jpeg;type
      TForm2 = class(TForm)
        IdHTTP1: TIdHTTP;
        Image1: TImage;
        ListBox1: TListBox;
        Memo1: TMemo;
        procedure ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      private
        { Private declarations }
        FDoc: IXMLDOMDocument;    procedure ParseXML;  public
        { Public declarations }
        constructor Create(AOwner: TComponent); override;
        destructor Destroy(); override;
      end;var
      Form2: TForm2;implementation{$R *.dfm}{ TForm2 }constructor TForm2.Create(AOwner: TComponent);
    begin
      inherited;
      FDoc := CoDOMDocument.Create;
      if not FDoc.loadXML(StringReplace(Memo1.Text, #$A, '', [rfReplaceALL])) then
        raise Exception.Create('XML Parse Error!');  ParseXML;
    end;destructor TForm2.Destroy;
    begin
      FDoc := nil;
      inherited;
    end;procedure TForm2.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    const
      XML_PATH = '//file[@ID=%s]/@img';
      IMG_FILE = 'C:\BUDDED';
    var
      FID, FExt: String;
      FIndex: Integer;
      FNode: IXMLDOMNode;
      FStream: TFileStream;
    begin
      FIndex := ListBox1.ItemAtPos(Point(X, Y), True);
      if FIndex <> -1 then
      begin
        FID := ListBox1.Items[FIndex];
        FID := Format(XML_PATH, [QuotedStr(FID)]);
        FNode := FDoc.selectSingleNode(FID);
        FID := VarToStrDef(FNode.nodeValue, '');
        FExt := IMG_FILE + ExtractFileExt(FID);
        FStream := TFileStream.Create(FExt, fmCreate or fmOpenReadWrite);
        try
          IdHTTP1.Get(FID, FStream);
        finally
          FStream.Free;      Image1.Picture.LoadFromFile(FExt);
        end;
      end;
    end;procedure TForm2.ParseXML;
    var
      FList: IXMLDOMNodeList;
      FNode: IXMLDOMNode;
    begin
      FList := FDoc.selectNodes('//@ID');
      with ListBox1.Items do
      try
        BeginUpdate;
        Clear;    FNode := FList.nextNode;
        while Assigned(FNode) do
        begin
          Add(VarToStrDef(FNode.nodeValue, ''));
          FNode := FList.nextNode;
        end;
      finally
        EndUpdate;
      end;
    end;end.
      

  3.   

    to budded 楼上的朋友。运行到 :if not FDoc.loadXML(StringReplace(Memo1.Text, #$A, '', [rfReplaceALL])) then
        raise Exception.Create('XML Parse Error!');//
    时就报错了。
    报错:project project1.exe raised exception class exception with message"xml parse error!" .process stopped,use step or run to continue能不能解释一下这样做的方法??万分感激!!!
      

  4.   

    to budded希望在代码处有些注释,我看的不是很懂。。
    最好说明下流程,就是如何实现的。。
    再次感激!!!!
      

  5.   

    注释就没了,出错原因:xml文件内容格式不对,
    <?xml version="1.0" encoding="gb2312"?>
    <menu>
    <file ID="21203383" name="狂乱升华版" singer="Mùsicヤ云ル" hot="21934" img="http://images.sogua.com/uploadserver/Image/2007/1024/164125359vr0rom55.jpg" url="http://amberyin.sogua.com/mv/view/21203383.htm"/>
    <file ID="21203558" name="~~~~礼帽舞绣~~~~~~~~" singer="冷月魂" hot="3427" img="http://images.sogua.com/uploadserver/Image/2007/1024/173836796vr0rom55.jpg" url="http://lentyue.sogua.com/mv/view/21203558.htm"/>
    </menu>
      

  6.   

    能解决吗??
    xml格式的问题。。??
    谢谢谢谢……!!!!!
      

  7.   

    请高手救命:
    上面的问题我写成这样时:XML:=TXMLdocument.Create(nil);
    XML.LoadFromFile('F:\test\test.xml');
    XML.Active :=true;
    .....xml 就是上面的xml 文件,程序运行报错:invalid unicode character,提示是xml问题。
    我不知道是不是要加载xml的控制信息:
    比如是
    xml.encoding:=....??
    xml.version=..??
    之类的东西,或者是xml的encoding的widestring转换问题。。???本人是超级菜鸟。。
    请高手救命!!!
    急呀。。