2013-09-25 117 views
1

我似乎无法使用XSD和XML数据绑定向导访问在线XML文件内容。我需要每天更新一个数据库表,使用联机XML中的所有请求货币。 我使用Delphi XE和XSD位于: http://www.bnr.ro/nbrfxrates.xsd 和XML是这样的:http://www.bnr.ro/files/xml/years/nbrfxrates2013.xmldelphi使用XSD处理XML

于是我下载了XSD,并与XML数据绑定向导处理它。这导致了单位nbrfxrates。

我需要能够在某一特定日期访问率特定货币,一些功能例如像

function getMyRate(date,currency):double; 
begin 
... 
end; 

在那里我可以提供一个日期和货币,并从XML获得价值我不知道该怎么做。

XML结构看起来很简单,但我坚持从德尔福访问它... 请帮助我。

回答

1

你只需要加载你的文件,并使用提供的访问器访问节点,这些访问器基本上都是Delphi标准类,有一些魔法来访问底层的DOM。

这是几秒钟摆弄你的文件后得到的。

procedure TForm1.Button1Click(Sender: TObject); 
var 
    obj: IXMLDataSet; 
begin 
    obj := LoadDataSet('D:\Downloads\nbrfxrates2013.xml'); 
    ShowMessage(obj.Body.Cube.Items[0].Date); 
end; 
+0

有没有什么办法可以直接在网上直接访问XML而无需先下载它?它位于http://www.bnr.ro/files/xml/years/nbrfxrates2013.xml – user1137313

+2

没有首先访问远程文件而没有下载它们。您认为您的网络浏览器如何管理在网络上显示任何内容? –

+0

从网上下载文件很容易。在你的表单中放置一个Indy HTTP组件,添加'f:= TFileStream.Create('D:\ Downloads \ nbrfxrates2013.xml',fmCreate); IdHTTP1.Get('http://www.bnr.ro/files/xml/years/nbrfxrates2013.xml',f); f.Free;'在我提供的代码之前,您已设置。当然,您需要添加适当的异常和错误处理。 –