gpt4 book ai didi

xml - 从函数返回 XML 文档

转载 作者:行者123 更新时间:2023-12-02 03:51:50 26 4
gpt4 key购买 nike

我正在尝试使用 Delphi 加载远程托管的 XML 文件。我假设我可以从流加载它。我有一个获取 URL 流的 FetchRemote 类:

function TFetchRemote.StreamFromUrl(filename : String) : TMemoryStream;
var
memStream : TMemoryStream;
http : TIdHttp;
begin
http := TIdHttp.Create();
memStream := TMemoryStream.Create;
http.Get(url + filename, memStream);
Result := memStream;
end;

我正在尝试使用返回的内存流来加载远程 XML:

function TFetchRemoteXML.XMLFromUrl(filename : string) : TXMLDocument;
var
memStream : TMemoryStream;
begin
memStream := fetchRemote.StreamFromURL(filename);
try
memStream.Position := 0;
Result := TXMLDocument.LoadFromStream(memStream);
finally
memStream.Free;
end;
end;

尝试编译时遇到的错误是:(在结果返回行上)

[dcc32 Error] FetchRemoteXML.pas(31): E2076 This form of method call only allowed for class methods or constructor

我有一个类似的类/方法来获取远程位图,它工作正常。我只是看不出我在获取 XML 时做错了什么。我尝试遵循 Delphi 帮助中的一些示例,并尝试从中获取一些提示 StackOverflow question但没有运气。任何建议将不胜感激,我是 Delphi 的新手(来自 Ruby 背景)。我正在使用 RAD Studio XE 5。

提前致谢!

最佳答案

LoadFromStream 方法是一个实例方法。这意味着您必须实例化 TXMLDocument 实例并对其调用 LoadFromStream

Result := TXMLDocument.Create(Owner);
Result.LoadFromStream(...);

您需要提供该对象的所有者,如 documentation 中所述。对于构造函数。

或者将 nil 传递给构造函数并切换到 IXMLDocument 而不是 TXMLDocument

function TFetchRemoteXML.XMLFromUrl(filename : string) : IXMLDocument;
var
memStream : TMemoryStream;
begin
memStream := fetchRemote.StreamFromURL(filename);
try
Result := TXMLDocument.Create(nil);
Result.LoadFromStream(memStream);
finally
memStream.Free;
end;
end;

关于xml - 从函数返回 XML 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20220326/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com