我需要使用此链接http://isbndb.com/api/books.xml?access_key=12345678&index1=isbn&value1=9780321635345通过XML服务从isbndb.com获取图书信息。
任何想法如何在delphi中做到这一点?
答案 0 :(得分:3)
您需要一个HTTP客户端(比方说Indy)和一个XML解析器。例如,对于XML解析器,只需使用OmniXML。 Indy包含在Delphi7中。然后只需编写如下代码:
procedure TForm1.Button1Click(Sender: TObject);
const
cURL = 'http://isbndb.com/api/books.xml?access_key=12345678&index1=isbn&value1=9780321635345';
var
HTTPClient: TIdHTTP;
XMLAsStream: TMemoryStream;
XMLDocument: IXMLDocument;
begin
HTTPClient := TIdHTTP.Create(nil);
try
XMLAsStream := TMemoryStream;
try
HTTPClient.Get(cURL, XMLAsStream);
XMLAsStream.Position := 0;
XMLDocument := CreateXMLDoc;
XMLDocument.LoadFromStream(XMLAsStream);
finally
XMLAsStream.Free;
end;
finally
HTTPClient.Free;
end;
end;
现在,您已将XML文档解析为内存中的DOM。只需使用它:)
答案 1 :(得分:2)
你有哪个Delphi 7版本?
Delphi 7 Feature Matrix表示如果你有Delphi 7 Enterprise或Architect,你可以使用内置的XML数据绑定向导来生成围绕XML的Delphi类。这些类是XML DOM的包装器。他们更容易使用XML。
有关如何使用XML数据绑定向导的信息,请参阅this answer和this video。
使用像Runner一样的Indy来获取XML是最简单的。
如果您有Delphi 7 Standard或Professional,那么您没有XML数据绑定向导,因此您必须使用XML DOM解析XML。
请注意,XML DOM可以涵盖standardized级别1,级别2或级别2的更多或更少 您的XML确定您需要的级别。
我不完全确定Delphi 7 Standard和Professional是否包含XML DOM,但Delphi 7有各种XML DOM。
很多人使用MSXML DOM(支持Level 2,在大多数Windows系统上都可用,因为它包含在Internet Explorer和许多其他Microsoft软件中)。
一个开源实现XML DOM是OmniXML(Runner也指出了;注意它只支持Level 1)。
- 的Jeroen