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控件显示出来,就是做一个链接。希望能给出全部的代码。万分感激!!!急!!
<?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控件显示出来,就是做一个链接。希望能给出全部的代码。万分感激!!!急!!
解决方案 »
- 请问 delphi 怎么连接多台 网络打印机
- 求教:一个函数作用域的问题?
- 请问存放数据源的容器是什么?
- 汇总查询---------------在线等!!!!!!!!!!
- 关于delphi5中NMSMTP发送邮件(带验证)的解决方法(分享给大家)
- 高分求救!用DELPHI编一个dos下的加法,谁第一个回答对,分全给他!!!!!!
- 关于with的问题,欢迎讨论,呵呵。
- 字符串比较的问题!!!急,望大家帮帮忙....
- 怎样打开文件
- 程序能在Windows每次启动时自动运行,谁知道多少种方式?
- clientdataset过滤后在客户端使用RecordCount显示只有一条,把cds.xmldata赋值到data后提交到服务器端,却显示RecordCount是没有过滤前的
- 组件的区别
这个再自已把后面的去掉var
MemStm:TMemoryStream;begin
memstm:=TMemoryStream.Create;
idhttp.get(jpgurl,MemStm);
MemStm.SaveToFile('');//里面是imgfilename
image1.Picture.LoadFromFile();
end;
it s ok
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.
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能不能解释一下这样做的方法??万分感激!!!
最好说明下流程,就是如何实现的。。
再次感激!!!!
<?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>
xml格式的问题。。??
谢谢谢谢……!!!!!
上面的问题我写成这样时: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转换问题。。???本人是超级菜鸟。。
请高手救命!!!
急呀。。