Požadavek load-files
Načtení souborů do XML
Požadavek pro načtení seznamů souborů do XML ze zadané složky serveru dle souborové masky či reg. výrazu. Je možné načítat soubory s textem, XML či HTML obsahem jako textové nebo binární soubory s kódováním.
Požadavek load-files, který nabízí rozšířenou funkcionalitu (pars xml / csv, un-zip, podsložky). Účelově jde o párový požadavek k save-files.
<request>
<load-files
path="{string}"
mask="{string}"
file-type="txt|xml|csv|hex|base64"
recurse="{boolean}"
codepage="acp|utf8|utf16|{#no}"
auth="{string}"
inzip-path="{string}"
inzip-mask="{string}"
inzip-recurse="{string}"
regex="{string}"
separator="{string}"
line-separator="{string}"
delimiter="{string}"
header="{string}"
/>
</request>
Atributy
path - relativní cesta ke složce načítaného, tedy zdrojového souboru (bez jeho názvu; nenpovinná a není-li uvedena, použije se přednastavené uložiště;(typ: string) TYP HODNOTY: string;
mask - souborová maska v konvenci *.* (vč. možnosti zadání plného názvu) použitá pro vyhledání souboru k načtení - může obsahovat několik masek oddělených znakem | (například *.txt|*.text );(typ: string) TYP HODNOTY: string;
file-type - typ načítaných souborů, pokud bude nastaveno na výchozí text, nebude probíhat žádné parsování obsahu, všechny ostatní typy způsobí převod obsahu dle zvoleného typu; Jedním požadavkem může být načítán POUZE JEDEN TYP souborů;(typ: string)
TYP HODNOTY: string;
Možnosti obsahu:
» txt ~ výchozí hodnota - načteno prostý text je bez parsování vložen mezi tagy »file« s doplněním escape sekvencí pro zajištění platného xml s načteným obahem;
» xml ~ obsah souboru bude parsován jako platné XML - do uzlu »file« je vložen kmenový uzel načítaného souboru jako potomek;
» csv ~ obsah souboru bude z CSV textového obsahu převedeno do XML uzlů jednotlivých řádků s hodnotami v atributech;
» hex ~ soubor je chápán jako binární a jeho obsah je bitově převeden do HEXA kódování a vložen do výstupního uzlu »file«;
» base64 ~ soubor je chápán jako binární a jeho obsah je bitově převeden do base64 kódování a vložen do výstupního uzlu »file«;
recurse - Hodnota true zapíná prohledávání podadresářů stejnou souborovou maskou; Zdrojová cesta je pak zapsána v atributech výsledného uzlu »file«;(typ: boolean) TYP HODNOTY: boolean;
codepage - určuje vstupní kódovou stránku načítaného textového souboru (»acp« - »utf8« | »utf16« - uložení do utf-8 či utf-16; »#numb« - může být číslo kódové stránky Windows); Při načítání binárních souborů do hex formátu bezpředmětné; Výchozí nastavení se řídí obdobným konfiguračním nastavením serveru;(typ: string)
TYP HODNOTY: string;
Možnosti obsahu:
» acp ~ výchozí hodnota - ActualCodePage - využití nastavení defaultní kódové stránky serveru, je předpokládán soubor v aktuálním kódování;
» utf8 ~ obsah souboru bude očekáván v kódování UTF-8; neplatí pro hex a base64 kódování;
» utf16 ~ obsah souboru bude očekáván v kódování UTF-16; neplatí pro hex a base64 kódování;
» {#no} ~ očekávané kódování souboru je udáno číslem kódové stránky;
auth - Autorizační řetězec při načítání souboru z přílohy dokumentu - obsahuje totéž co autorizační část odkazu na takový soubor (tj. část za otazníkem).(typ: string) TYP HODNOTY: string;
inzip-path - adresářová struktura uvnitř zip archivu, kde hledat soubory;
inzip-mask - maska pro hledání souborů uvnitř zip archívu - zároveň aktivuje prohledávání zip archivů;
inzip-recurse - (true |false) zda prohledávat i podadresáře zipoveho archivu;
regex - (true |false) je-li true, pak jsou obě masky interpretovány, jako regulární výraz - může být použito několik regulárních výrazů, jsou odděleny znakem ~;
separator - oddělovač políček záznamů (sloupečků) pro CSV soubory (výchozí znak je ;);
line-separator - oddělovač celých záznamů (řádek) v CSV souborech (default <CR> a <LF>);
delimiter - textový kvalifikátor políček záznamů v CSV (default žádný);
header - počet prvních řádek CSV (hlavička), které se NEmají načíst;
Potomci
Požadavek load-files neobsahuje žádné další elementy, ani žádné jiné číselné či řetězcové hodnoty.
Odpověď
Odpověď obsahuje potomky file s načtenými obsahy požadovaných souborů nebo případným hlášením chyby.
Struktura odpovědi na požadavek load-files vrácená v obálce response:
<response>
<load-files>
<file ... {string}</file> ?
</load-files>
</response>
Atributy
Odpověď load-files neobsahuje žádné atributy.
Potomci
Uzel file
Uzel obsahující jeden načtený soubor odpovídající vstupní masce.
Jde o uzel obsahující text TYP HODNOTY: string;
<file
path="{string}"
type="ok|error"
detail="{string}"
name="{string}"
>
<{element} ... > ... </{element}>?
|
{string}
</file>
Atributy
path - podsložka - Volitelná podsložka nebo odkaz na virtuální složku, relativní cesta ke složce cílového souboru (bez jeho názvu); nenpovinná a není-li uvedena, použije se přednastavené uložiště.(typ: string)
type - Obsahuje hodnoty ok nebo error (možnosti obsahu: ok | error)
detail - Upřesnění - Bližší popis vzniklé chyby. Je k dispozici při odpovědi typu 'error'.(typ: string)
name - Název načteného souboru - Název načteného souboru tak, jak je uložen v cílové složce.(typ: string) TYP HODNOTY: string;
Potomci
Uzel file umožňuje uvést jeden volitelný element - Element reprezentující kmenový uzel načteného XML souboru nebo row element parsovaného CSV obsahu. Uzel může obsahovat prostý text, pokud neobsahuje XML uzly.
Výraz pro identifikaci chyb v odpovědi serveru: load-files[@type='error'] (odkaz na popis detailu: @descr).
Další info
Dle typu souboru je prováděna kontrola obsahu, parsování. Jak u XML tak u CSV souboru je vrácena chyba, pokud nejsou v předepsaném formátu.
Chyba při načítání jednoho souboru nemá vliv na načítání dalších. Chyba je uvedena u konkrétního souboru, ale v prohledávání se pokračuje.
Atribut codepage nemá smysl u načítání hexadecimálních obsahů. U souborů typu XML má použití atributu codepage za následek, že flexideo se samo pokusí o dekódování souboru - může pomoci s načítáním nesprávně uložených |XML souborů. U správně uložených XML souborů by se neměl atribut codepage uvádět. Parser jej pak načte dle parsovací instrukce, případně úvodní sekvence znaků formátu unicode.
Požadavek využívá povolení load-file u virtuálních adresářů. Pro tyto účely rovněž používá oprávnení uživatele mapované pod "p_publoads";
U každého vráceného souboru je uváděn název (včetně relativní cesty), pokud pochazí ze ZIP archivu, je uváděn jak název ZIP archivu, tak i interní název souboru včetně cesty.
CSV parser
Při načítání csv souborů dochází k převodu řádků textu s oddělovači na strukturované XML pomocí CSV-to-XML parseru. Výsledné XML opět není v žádném jmenném prostoru a má konstantně danou strukturu - každý načtený csv soubor je reprezentován jedním uzlem file a každý řádek pak uzlem row:
Koncový řádek za posledním řádkovým oddělovačem, je-li prázdný, je plně ignorován. Parser je stavěn tak, aby si poradil s případným vynecháním či neočekávaným zařazením textových kvatifikátorů v podobě uvozovek či apostrofů, nejsou-li explicitně vypnuty. Rovněž tak si umí poradit při neúplném zakončení řádku.
Viz. též příklad požadavku (vč. příkladu na CSV).