Fórum Ler XML de uma StringList #299784
17/10/2005
0
Boa noite pessoal. Estou desenvolvendo uma aplicação cliente/servidor onde o protocolo de comunicação se dara através de mensagens em XML. Já criei a estrutura do XML através do XML Data Binding, onde consigo ler, alterar e salvar arquivos em XML normamente. A questão é a seguinte, gostaria de ler o arquivo XML através de uma StringList onde é salvo o arquivo transmitido pelo cliente/servidor, sem precisar salvá-lo em disco para ler.
Andei lendo no Help do Delphi e descobri um método LoadFromXml mas quando tento fazer:
xml.OwnerDocument.LoadFromXML(aListBuffer);
ele dá um erro. Inclusive esse método (LoadFromXML) não aparece na lista de métodos disponíveis, mesmo a propriedade OwnerDocument sendo do tipo IXMLDocument, que possui esse método descrito no help.
Derrepente uma solução seria transformar a stringlist para ser usada como arquivo, utilizando-se o método:
xml.OwnerDocument.LoadFromFile(filename);
isso seria possível?
Caso alguém possa me ajudar seria muito grato.
Andei lendo no Help do Delphi e descobri um método LoadFromXml mas quando tento fazer:
xml.OwnerDocument.LoadFromXML(aListBuffer);
ele dá um erro. Inclusive esse método (LoadFromXML) não aparece na lista de métodos disponíveis, mesmo a propriedade OwnerDocument sendo do tipo IXMLDocument, que possui esse método descrito no help.
Derrepente uma solução seria transformar a stringlist para ser usada como arquivo, utilizando-se o método:
xml.OwnerDocument.LoadFromFile(filename);
isso seria possível?
Caso alguém possa me ajudar seria muito grato.
Randallo
Curtir tópico
+ 1
Responder
Posts
20/10/2005
Firekiller
O que você poderia fazer é o seguinte, salvar a StringLIst numa stream e abri-la
Tipo
Var
mStream : TMemoryStream;
mStream := TMemoryStream.Create;
StringLIst.SaveToStream(mStream);
mStream.Position := 1;
xml.OwnerDocument.LoadFromStream(mStream);
PS: Não trabalho com XML, portanto não sei se irá funcionar.
Tipo
Var
mStream : TMemoryStream;
mStream := TMemoryStream.Create;
StringLIst.SaveToStream(mStream);
mStream.Position := 1;
xml.OwnerDocument.LoadFromStream(mStream);
PS: Não trabalho com XML, portanto não sei se irá funcionar.
Responder
Gostei + 0
21/10/2005
Randallo
Obrigado fire...
Andei pesquisando e encontrei o que precisava, caso alguem tb precise aí vai.....
Title: Load XML Data Binding object from a string
Name: Matt Peebles
Summary: A simple way to load a XML Data Binding object from a string of XML, since a function is not included in the generated interface unit.
Description: When using XML Data Binding, a function is not included to populate the object that is based off of you XML using a string. Borland does provide a way to load it from a previously created IXMLDocument, or you could load it from a file. Here is a function you can add to the generated interface unit to allow loading from a string.
//Based on a documentElement named Confirmations
function GetConfirmations(Doc: IXMLDocument): IXMLConfirmationsType; overload; //Overload added
function GetConfirmations(DocString: string): IXMLConfirmationsType; overload; // Add this function to load from a string
// Add this function to perform loading
function GetConfirmations(DocString: string): IXMLConfirmationsType;
begin
Result := LoadXMLData(DocString).GetDocBinding(´Confirmations´, TXMLConfirmationsType) as IXMLConfirmationsType;
end;
I just add this to all my interface units and it makes things simple.
Andei pesquisando e encontrei o que precisava, caso alguem tb precise aí vai.....
Title: Load XML Data Binding object from a string
Name: Matt Peebles
Summary: A simple way to load a XML Data Binding object from a string of XML, since a function is not included in the generated interface unit.
Description: When using XML Data Binding, a function is not included to populate the object that is based off of you XML using a string. Borland does provide a way to load it from a previously created IXMLDocument, or you could load it from a file. Here is a function you can add to the generated interface unit to allow loading from a string.
//Based on a documentElement named Confirmations
function GetConfirmations(Doc: IXMLDocument): IXMLConfirmationsType; overload; //Overload added
function GetConfirmations(DocString: string): IXMLConfirmationsType; overload; // Add this function to load from a string
// Add this function to perform loading
function GetConfirmations(DocString: string): IXMLConfirmationsType;
begin
Result := LoadXMLData(DocString).GetDocBinding(´Confirmations´, TXMLConfirmationsType) as IXMLConfirmationsType;
end;
I just add this to all my interface units and it makes things simple.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)