Autor | Zpráva | ||
---|---|---|---|
sany Profil * |
#1 · Zasláno: 13. 6. 2013, 21:57:31
Zdravím.
Nevěděl by někdo: Jak by se dalo provést sloučení libovolného množství xml souborů (se stejným mapováním-stejnou strukturou) do jednoho? Děkuji za radu.. |
||
juriad Profil |
#2 · Zasláno: 13. 6. 2013, 22:30:03
Obecně to nejde (ani nemůže jít, vždy se musíš při slučování na nějaké úrovni zastavit), ale pokud popíšeš přesná pravidla a nejlépe uvedeš příklad před sloučením a po sloučení, třeba se k něčemu dobereme.
Očekáváš řešení pomocí nějakých nástrojů pro práci s xml, nebo program (vzhledem k zaměření diskuse asi v PHP)? |
||
peta Profil |
juriad: Takhle to chapu ja...
<xml> <item>ahoj</item> </xml> + <xml> <item>nazdar</item> </xml> = <xml> <item>ahoj</item> <item>nazdar</item> </xml> |
||
juriad Profil |
#4 · Zasláno: 14. 6. 2013, 09:18:00 · Upravil/a: juriad
peta:
co případ: <catalog> <categories> <category name="psi"/> <category name="kocky"/> </categories> <products> <product name="bernardyn" category="psi"/> <product name="labrador" category="psi"/> <product name="devon rex" category="kocky"/> </products> </catalog> peta: pokud by se všechny elementy měly naházet přímo do kořenového elementu, bez jakéhokoli pořadí a logiky, tak by při pěkně formátovaném xmlku stačilo: 1/ prvnímu xml odstranit poslední řádek (uzavírací tag kořenového elementu) 2/ druhému xml odstranit první řádek (otevírací tag kořenového elementu), případně dva či tři, pokud xml obsahuje prolog 3/ na tvrdku sloučit oba soubory |
||
sany Profil * |
#5 · Zasláno: 14. 6. 2013, 09:48:03
Věc se má tak, že normálně s xml daty pracuji v excelu (xml data import) s daty se dá pak pohodlně pracovat. Momentálně jsem ale jako vstup dostal asi 1000 souboru a v každém je několik záznamů. Musím z nich udělat jeden soubor a pak data setřídit, upravit apod.
Při takovém množství souborů, to ale exel nějak nechce sežrat a nechce se mi procházet jeden po druhém.. |
||
Joker Profil |
#6 · Zasláno: 14. 6. 2013, 09:52:38
juriad:
Další možnost by byla vyrobit nějaký nový kořenový element a do něj postupně sypat kořenové elementy z těch XML souborů (včetně obsahu, samozřejmě) a na konci ho zase uzavřít. |
||
peta Profil |
Tak to nasyp do databaze. Mysql, treba. SQL prikazy mas podobne jako zpracovani excelem. Pripadne si muzes udelat pak export na xml nebo csv pro excel.
juriad: Chapu. Mohlo by to byt zajimave resit. Slouceni xml zpusobem, jaky popisujes, muze delat problemy pri importu. Z duplicitnich tagu vyrobi pole categories[0] = ['psi', 'kocky'], categories[1] = ['krecci']. |
||
sany Profil * |
#8 · Zasláno: 14. 6. 2013, 11:43:20
peta:
Doufal jsem, že někdo bude mít tip na nějaký nástroj a vyhnu se psaní skriptu.. |
||
ts_istudio Profil |
#9 · Zasláno: 14. 6. 2013, 11:47:58
sany:
Už to, co vidíš napsáno výše, vyplývá, že nějaký plně automatický nástroj najdeš těžko, protože nejspíš neexistuje. Když ukážeš strukturu těch souborů, dostaneš konkrétnější radu. |
||
Joker Profil |
#10 · Zasláno: 14. 6. 2013, 12:03:49
Teoreticky by byla úplně primitivní cesta:
1. Spojit všechny soubory do jednoho (to jde udělat i z operačního systému, minimálně přes příkazovou řádku, příklad). 2. Otevřít výsledek třeba v PSPadu, nebo podobném editoru 3. Pomocí regulárních výrazů odstranit „<\?xml [^>]+\?>“ (v PSPadu: Hledat, Nahradit, Najít: to co je uvnitř uvozovek, Nahradit: nechat prázdné a zaškrtnout „Regulární výrazy“). 4. Na začátek souboru dopsat nějaký tag a na konci souboru ho ukončit a v případě potřeby (není-li kódování UTF-8) na první řádek dopsat XML prolog. Tím by mělo vzniknout platné XML. Jestli v použitelném tvaru, to je otázka. |
||
ts_istudio Profil |
#11 · Zasláno: 14. 6. 2013, 13:14:06
Joker:
„1. Spojit všechny soubory do jednoho (to jde udělat i z operačního systému, minimálně přes příkazovou řádku, příklad).“ Mělo by fungovat i prosté copy *.xml vystup.xml |
||
Časová prodleva: 11 let
|
0