Diskuze: Java - nejvhodnější třída k parsování XML SAXem
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 15 zpráv z 15.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Použiji SAXParser, snad to je správná volba.
Ne
Vygenerovaná
dokumentace mi nestačí, chci vědět kterou třídu mám použít, ne
jak ji použít. Po chvíli Googlení jsem zjistil, že SAX je wrapper
nad readerem, ale stejně jsem nikde nenašel proč používat zrovna Sax,
nicméně to bylo na několika místech doporučeno.
Myslím si, že pro každý případ se může hodit jiná třída. Psali to zřejmě různí autoři, každý s jiným výsledkem. Otestuj všechny a pak si vyber.
Java není jako C#, kde pro každý účel je jen jedna vhodná třída.
Na to nemám čas a i kdybych ho měl, tak bych to neudělal, protože bych ho využil nějakým lepším způsobem. V C# je pro zápis XML XmlWriter a pro čtení XmlReader, ještě je pod tím vždy ukázáno jak třídu používat. Tak by to mělo být, vždyť je to SAX, jeden způsob, jedna třída. Duplicitní třídy ve standardní knihovně jazyka jsou chybou v jejím návrhu.
Jinak koukám, že oficiální dokumentace Javy nemá na mnoha místech ani
zvýrazněnou syntaxi 
Jak jsem psal, SAX je wrapper, to druhé se zdá být abstraktní, pak je
ještě reader, takže máme v Javě 4 třídy pro 1 věc, možná bych našel i
další. Teď koukám, že pro generování dokumentů mohu použít
XMLStreamWriter (pro čtení se reader samotný nepoužívá) nebo nějakou
TransformerFactory, aby těch názvů nebylo málo 
Koukám třeba, že XmlReader je interface a XmlStreamReader je třída. Kdyby se alespoň používala konvence I před interfacem, bylo by to hned lepší. C# má factory metody třeba přímo na třídě XmlReader, což mi dává větší smysl a pokud bych to oddělil, nepojmenovával bych factory úplně jinak než to co tvoří.
Ještě jsem našel tohle 
"SAXParserFactory [is] a hideous, evil monstrosity of a class that should
be hung, shot, beheaded, drawn and quartered, burned at the stake,
buried in unconsecrated ground, dug up, cremated, and the ashes tossed
in the Tiber while the complete cast of Wicked sings "Ding dong, the
witch is dead." --Elliotte Rusty Harold on xml-dev
Našel jsem si příklad na SAXParser a vypadá to docela sympaticky. Tedy pokud se to správně upraví.
Ta Java je opravdu neskutečná, teď jsem si konečně naivně napsal kód zápisu do XML a ona mi řekne, že XmlStreamWriter neobsahuje rozhraní nutné k použití v try-with-resources konstrukci. Čím více v ní dělám, tím méně v ní dělat chci.
Chtěl jsem vysvětlit SAX
Nějak to dopíšu, ale je to opravdu hnus 
K JAXB se dostanu, pokud je to hlavní cesta kterou se v Javě pracuje s DOM,
už jsme viděl zas několik typů továren co se k práci s tím používají,
achjo 
Se SAX jsem nikdy v Jave nedelal, ale DOM je pekne napsany zde
http://www.mkyong.com/…-dom-parser/
Zobrazeno 15 zpráv z 15.