Walidacja plików XML, ich pakowanie, szyfrowanie, podpisywanie – potrzebne wskazówki

0

Witam serdecznie. Mam pytanko do mądrzejszych od siebie. Mam napisany w Delphi programik do obsługi sklepu. Teraz muszę dorobić JPK_VAT. To już mam, ale chodzi mi o walidację. Kod jak poniżej sprawdza mi poprawnie, ale wymaga połączenia z netem. Ja rozumiem, że i tak muszę mieć połączenie aby w konsekwencji wysłać ten plik, ale przy dużym pliku i połączeniu mobilnym chwilę to trwa. Co zrobić, aby sprawdzenie było z dysku?

function TForm30.walidacja;
var xml,xsd:variant;                             
begin
 xsd:=CreateOLEObject('MSXML2.XMLSchemaCache.6.0');
 xsd.validateOnLoad:=true;
 xsd.add('http://jpk.mf.gov.pl/wzor/2016/10/26/10261/','d:\Schemat_JPK_VAT(2)_v1-0.xsd');
 xml:=CreateOLEObject('MSXML2.DOMDocument.6.0');
 xml.async:=false;
 xml.validateOnParse:=true;
 xml.resolveExternals:=true;
 xml.schemas:=xsd;
 xml.load(plik);
 result:=xml.parseerror.errorcode=0;
 if result then showmessage('W pliku '+edit1.text+' nie znaleziono błędów.') else
 showmessage('Walidacja wykazała błędy.'+#13#13+'Linia: '+inttostr(xml.parseerror.line)+' - '+
 xml.parseerror.srctext+#13#13+xml.parseerror.reason+#13+inttostr(xml.parseerror.errorcode));
 xsd:=null;
 xml:=null;
end;

za tym jeżeli będą błędy, to kod jw pokaże tylko 1-szy napotkany. Chciałem zrobić pętlę:

for i:= 0 to XML.ParseError.allErrors.length-1 do

ale tutaj przerywa działanie programu błędem "Invalid variant operation".

Dalsze czynności, czyli spakowanie, szyfrowanie, podpisanie (chcę profil zaufany) jest dla mnie w zasadzie czarną magią. Czy mogę liczyć na jakieś sugestie i porady. Z góry dziękuję. Sławek.

2

ministerstwo finansów udostępnia aplikację do walidacji i wysyłania plików JPK
można użyć ją do samej walidacji plików,bez wysyłania

link do 32 bitowej wersji
http://www.mf.gov.pl/documents/764034/5134536/Klient+JPK+2.0+%281.0.2.6%29+x86.msi

link do 64 bitowej wersji
http://www.mf.gov.pl/documents/764034/5134536/Klient+JPK+2.0+%281.0.2.6%29+x64.msi

0

i rozwiązanie @grzegorz_so jest wg mnie najlepsze bo jak masz gotowy JPK to już się niczym nie martwisz (a na D7 jest tych zmartwień trochę, a już podpisanie to grzebanie na dłuższy czas) a i ministerstwo lubi protokół zmienić. A program ten pokaże Ci dokładnie co go boli (o ile sam plik JPK będzie błędny)

0

Niewątpliwie macie rację. Korci jedynie aby mieć to w jednym swoim programie. Jeśli chodzi o podawanie błędów w pętli, to sobie poradziłem.

0

Witam ponownie. Szyfrowanie i wysyłanie danych chwilowo sobie daruję, ale czy ktoś podpowie jak sprawdzić tego XMl-a bez aktywnej sieci. Sławek

0

Rozumiem, że nikt nic nie podpowie?

0

Wygląda na prosty problem, na serwerze masz wzór danych i on pobiera ten wzór, a dane masz na dysku, czyli tylko pobierasz ten wzór, bo parser musi w jakiś sposób zweryfikować czy typ danych jest prawidłowy.

Pobierz schemat danych i podaj lokalną ścieżkę zamiast adresu, a potem przywrócisz to jak skończysz testować.

0

Dziękuję za odpowiedź. Sprawdzę później. rozumiem iż chodzi o linię

xsd.add('http://jpk.mf.gov.pl/wzor/2016/10/26/10261/','d:\Schemat_JPK_VAT(2)_v1-0.xsd');

1 użytkowników online, w tym zalogowanych: 0, gości: 1