从Delphi 7中使用XML

时间:2010-08-21 05:13:38

标签: xml delphi delphi-7

我需要使用此链接http://isbndb.com/api/books.xml?access_key=12345678&index1=isbn&value1=9780321635345通过XML服务从isbndb.com获取图书信息。

任何想法如何在delphi中做到这一点?

2 个答案:

答案 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 answerthis 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