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.

syntax
<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:

syntax
<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;

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


Požadavek save-filePožadavek save-filesPožadavek load-files