Portál AbcLinuxu, 7. května 2025 12:25

Dotaz: Porovnání dvou XML souborů

6.8.2020 20:52 Andy | skóre: 18 | NMnMet
Porovnání dvou XML souborů
Přečteno: 646×
Odpovědět | Admin
Ahoj či dobrý den,

řeším porovnávání dvou 6MB XML souborů se stejnou strukturou, hledal jsem na netu a nenašel jsem řešení, které by se mi líbilo (např. přes diff, utility xmldiff a diffxml taky nefungovaly) a tak mě napadlo, že bych si to napsal, a teď co mi doporučíte. Napadl mě python, ale kvůli rychlosti přemýšlím nad C a knihovnou libxml2. C jsem už dlouho neviděl, ale jsem ochoten v rámci sebezlepšení na tom zamakat případně. Řešil někdo prosím něco podobného? Děkuji
Válka je vůl ... a já taky ;) | Chaotic state of my influence.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.8.2020 20:53 Andy | skóre: 18 | NMnMet
Rozbalit Rozbalit vše Re: Porovnání dvou XML souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zapomněl jsem napsat, že data v těch 2 souborech můžou být různá v různých místech.
Válka je vůl ... a já taky ;) | Chaotic state of my influence.
Gréta avatar 6.8.2020 22:10 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Porovnání dvou XML souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin

nóó kdybys to jakoby dělal přeci jenom v pythonu tak uplně supr na parsování je beautifulsoup hele ;D noa jestli to sou jakože fakt jenom dva soubory a ne děsně moc dvojic souborů tak asi jako neni moc důvod řešit jakej jako vzit jazyk jakože kuli optimalizaci rychlosti běhání prográmku ne?? :O :O

Zelená energetická soustava založená na obnovitelnejch zdrojích energie versus realnej svět 🤡🇪🇸
6.8.2020 22:25 Andy | skóre: 18 | NMnMet
Rozbalit Rozbalit vše Re: Porovnání dvou XML souborů
díky za tip, zkusim na to mrknout
Válka je vůl ... a já taky ;) | Chaotic state of my influence.
7.8.2020 11:55 mimi.vx | skóre: 37 | blog: Mimi.VX | Praha
Rozbalit Rozbalit vše Re: Porovnání dvou XML souborů

stale lepsi bude nejaka knihovna typu lxml ... prece jen BS4 je zamerena n neco jineho...

USE="-gnome -kde";turris
Gréta avatar 7.8.2020 12:43 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Porovnání dvou XML souborů

beautifulsoup umí lxml jakoby použít jako parser hele a hele :O ;D

Řešení 1× (OldFrog {Ondra Nemecek})
7.8.2020 12:37 Bherzet | skóre: 19 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Porovnání dvou XML souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Převeď do kanonické formy (xmllint --c14n neco.xml) a pak udělej normální textový diff.
7.8.2020 13:33 iq8
Rozbalit Rozbalit vše Re: Porovnání dvou XML souborů
Dobrý den Když dojde k převedení XML do kanonické formy tak se přehodí pořadí elementů? Myslel jsem, že to pouze jakoby vymaže neviditelné znaky a konce řádků. Jestli tohle bude fungovat tak mi to vyřeší obdobný problém jako má kolega.

7.8.2020 13:45 Bherzet | skóre: 19 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Porovnání dvou XML souborů
Ne, spletl jsem se. Myslel jsem si, že to elementy abecedně seřadí, ale ono by to ani nedávalo smysl, protože třeba u XHTML by to úplně změnilo význam.

No, možná to pod tom převodu do kanonické formy prostě ještě prohnat | sort (když jde jen o porovnání).
11.8.2020 11:36 Kuku
Rozbalit Rozbalit vše Re: Porovnání dvou XML souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Proc porovnavat primo XML? 6MB nic neni. Ja bych si oba soubory nacetl do nejaky struktury v pameti - treba staci obyc pole a rekurzivne porovnaval polozky.
Gréta avatar 11.8.2020 11:51 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Porovnání dvou XML souborů

noa stejně skončíš u toho žesi budeš psát nějakej svuj *.xml parser. proč jako nepužít nějakej vověřenej hotovej už?? :O :D ;D ;D

11.8.2020 12:24 Kuku
Rozbalit Rozbalit vše Re: Porovnání dvou XML souborů
Kdo rika o psani xml parseru? Vetsina jazyku snad proboha ma nacteni XML do struktury, ne?
11.8.2020 12:44 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Porovnání dvou XML souborů
Pro interaktivní porovnání by stačilo:
# xmllint --format a.xml > a-formatted.xml
# xmllint --format b.xml > b-formatted.xml
# colordiff a-formatted.xml b-formatted.xml 
# meld      a-formatted.xml b-formatted.xml 
Pro programové zpracování použít jiné hotové nástroje:
-- OldFrog

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.