2013-06-28 42 views
5

Tôi đang phát triển một ứng dụng đa nền tảng (cho Windows, Mac, v.v.) và cho các máy 32 bit và 64 bit. Tôi có rất nhiều tệp XML mà tôi cần xác thực với XSD của mình.Xác nhận hợp lệ các tệp XML với XSD trong FireMonkey

Có cách nào để thực hiện điều này trong Delphi XE3 không?

Tôi đã thử xác thực DTD nhưng tôi luôn gặp lỗi "DTD bị cấm". Tôi cũng đã thử các giải pháp được đề cập trên nhiều trang web để giải quyết lỗi này, nhưng tôi đã không thành công.

Xin cảm ơn trước.

Dưới đây là đoạn code tôi đã sử dụng ...

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; 

Trả lời

2

Rõ ràng bạn cần một validator cross-platform.

Có thể Libxml2 (http://xmlsoft.org/) là một tùy chọn, vì nó có thể được sử dụng từ nhiều ngôn ngữ lập trình trên nhiều nền tảng.

Một nguồn mở Pascal wrapper cho libxml2 là hoành phi câu trên http://sourceforge.net/projects/libxml2-pas/

+0

Cám ơn response.i đã cố gắng trên cho biết trang web nhưng có vẻ như không có ví dụ cho Delphi. –

+0

@ user2531352 sử dụng Google - xem chỉnh sửa của tôi – mjn

+0

Cảm ơn. Tôi đã sử dụng điều đó nhưng vi phạm quyền truy cập khi khởi động. –