【问题标题】:Consume XML from Delphi 7从 Delphi 7 使用 XML
【发布时间】:2010-08-21 05:13:38
【问题描述】:

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

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

【问题讨论】:

    标签: xml delphi delphi-7


    【解决方案1】:

    您需要一个 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。就用它吧:)

    【讨论】:

    • 您也可以使用 Delphi 7 标配的 TXMLDocument 来代替 OmniXML。
    • 当然,我只是用我使用的解析器做了一个例子:)
    【解决方案2】:

    你有哪个 Delphi 7 版本?

    Delphi 7 Feature Matrix 表示如果您有 Delphi 7 Enterprise 或 Architect,您可以使用内置的 XML 数据绑定向导围绕您的 XML 生成 Delphi 类。这些类是 XML DOM 的包装器。它们使使用 XML 变得更加容易。

    请参阅this answerthis video,了解如何使用 XML 数据绑定向导。

    使用 Indy 就像提到的 Runner 一样,最容易获取 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)。

    --杰罗恩

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2011-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多