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
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).
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.