2013-06-28 19 views
5

Sto sviluppando un'applicazione multipiattaforma (per Windows, Mac ecc.) E per macchine a 32 e 64 bit. Ho molti file XML che ho bisogno di convalidare con il loro XSD.Convalida file XML contro XSD in FireMonkey

C'è qualche modo per farlo in Delphi XE3?

Ho provato la convalida DTD ma ricevo sempre un errore "DTD proibito". Ho anche provato soluzioni menzionate su molti siti Web per risolvere questo errore, ma non ho avuto successo.

Grazie in anticipo.

Di seguito è il codice che ho usato ...

function TForm2.ValidateXML(const xmlFile : TFileName) : boolean; 
var 
xmlDoc: TXMLDocument; 
begin 
result := false; 
    xmlDoc := TXMLDocument.Create(nil) ; 
    try 
    xmlDoc.ParseOptions := [poResolveExternals, poValidateOnParse]; 
    try 
     xmlDoc.LoadFromFile(xmlFile) ; 
    xmlDoc.Active := true; //this will validate 
    result := true; 
    except 
    on EX : EDOMParseError do 
    begin 
    ShowMessage('Invalid XML: ' + Ex.Message) ; 
    end; 
    end; 
finally 
    xmlDoc := nil; 
end; 
end; 

risposta

2

Ovviamente è necessario un validatore cross-platform.

Forse Libxml2 (http://xmlsoft.org/) è un'opzione, in quanto può essere utilizzato da molti linguaggi di programmazione su molte piattaforme.

Una fonte Pascal involucro aperto per libxml2 è a disposizione sul http://sourceforge.net/projects/libxml2-pas/

+0

Grazie per response.i hanno provato su detto sito web, ma sembra che ci sia alcun esempio per Delphi. –

+0

@ user2531352 utilizzare Google - vedere la mia modifica – mjn

+0

Grazie. Ho usato questo, ma ottenendo violazioni di accesso all'avvio. –