Pouze tento týden sleva až 80 % na e-learning týkající se Pythonu. Zároveň využij akce až 80 % zdarma při nákupu kreditů. Více informací:
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Lekce 7 - Zápis XML souborů SAXem v Javě

Zpět

 

 

Komentáře
Zobrazit starší komentáře (11)

Avatar
Jan Kašpar
Člen
Avatar
Jan Kašpar:11.7.2016 9:28

Změň encoding v nastavení celého svého projektu a pak už nebudeš mít problém se špatným formátováním

Editováno 11.7.2016 9:28
 
Odpovědět
11.7.2016 9:28
Avatar
rosatislav
Člen
Avatar
rosatislav:17.2.2017 19:30

Vidíme, že SAX poznal, že v elementu uzivatel není kromě atributu žádná hodnota a tak tag vyrenderoval jako nepárový.

Jenom pro úplnost, kde přesně vidím, že ten tag byl vytvořen nepárový, když ukázce nad tou větou, je vše párové a i mně se vytvořil dokument, kde je vše párové?

Editováno 17.2.2017 19:31
 
Odpovědět
17.2.2017 19:30
Avatar
Ruda Pivrnec
Člen
Avatar
Ruda Pivrnec:16.2.2019 18:51

Ahoj, použil jsem tento příklad na prográmek pro převod XML s účtenkami na jiné XML pro import do účetního programu. Funguje mi to bezvadně, ale potřeboval bych poradit - s javou dělám poprvé v životě. Když to spustím v NetBeans, je vygenorovaný soubor OK, ale když spustím přímo .jar, tak je v háji čeština. A ještě prosím maličkost - jak zařídit odřádkování a mezery pro přehlednost ve vytvářeném XML? Díky moc.

 
Odpovědět
16.2.2019 18:51
Avatar
Adam Bucher
Člen
Avatar
Adam Bucher:22.8.2019 19:57
finally{
    try{
        if (xsw != null){
                xsw.close();
        }
    }
    catch (Exception e){
            System.err.println("Chyba při uzavírání souboru: " + e.getMessage());
    }
}

Proč dávat do try bloku i testování, zda proměnná neobsahuje hodnotu null - testování bude bezchybné vždy. Potom mi přijde logičtější:

finally{
    if (xsw != null){
        try {
                xsw.close();
        } catch (Exception e) { ... }
    }

Nepravdivá informace o vyrenderování tagu jako nepárového (viz komentář od rosatislav) je v článku stále, i když na ni bylo upozorněno před více než dvěma lety :-(.

Document document = builder.parse(new InputSource(new InputStreamReader(new FileInputStream(soubor))));

Možná tomu dřív tak nebylo, ale lze tento šílený řádek nahradit jednoduchým

Document document = builder.parse(soubor);

a builder už si sám správně document ze souboru vytvoří.

A nakonec, uvedený DateTimeFormatter pro uložení LocalDate podle ukázky nefunguje (řešením je převést jeho argument na LocalDateTime pomocí u.getRegistro­van().atStartOf­Day()) anebo, lépe, změnou patternu při získávání instance DateTimeFormat­teru zápisem metody ofPattern("d'­.'MMMM yyyy")).

 
Odpovědět
22.8.2019 19:57
Avatar
Rozbita Zaluzie:4.6.2020 11:05

Po přidání všech těhle řádků

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new InputStreamReader(new FileInputStream(soubor))));

// Získáme novou instanci transformeru
Transformer xformer = TransformerFactory.newInstance().newTransformer();
// Nastavíme formátování pro XML
xformer.setOutputProperty(OutputKeys.METHOD, "xml");
// Nastavíme odsazení
xformer.setOutputProperty(OutputKeys.INDENT, "yes");
Source source = new DOMSource(document);
Result result = new StreamResult(new File(soubor));
xformer.transform(source, result);

se mi vše rozsvítilo jako vánoční stromeček ale i po přidání všech inportů které mi nabídl NetBeans a vyzkoušení zkrácení document builderu se stále najde pár chyb
nevíte kde by mohl být problém

 
Odpovědět
4.6.2020 11:05
Avatar
Jan Křížek:14.9.2021 16:22

Vůbec nechápu smysl privátní funkce "formatuj", když se stejně nikde nevolá. Vůbec nic to nedělá. Všechno je beze změny ať už to tam je nebo ne.
Budu rád, pokud mi to někdo vysvětlí ať tomu více porozumím.

 
Odpovědět
14.9.2021 16:22
Avatar
Michal Hloušek:7.3.2022 15:51

Zdravím všechny, vypadá to že při volání metody "formatuj()" to vyhodí následující vyjímku "Chyba při formátování souboru: unknown protocol: c" a tudíž ve vašem programu nedojde ke zformátování .xml souboru. Osobně jsem tento problém vyřešil následující změnou v metodě "formatuj()":
Document document = builder.parse("fi­le:///" + soubor);

 
Odpovědět
7.3.2022 15:51
Avatar
Atrament
Supertvůrce
Avatar
Odpovídá na Michal Hloušek
Atrament:8.3.2022 1:21

Nemáš v cestě k tomu souboru náhodou mezeru?

 
Odpovědět
8.3.2022 1:21
Avatar
Odpovídá na Atrament
Michal Hloušek:8.3.2022 8:25

To je pravda, mám mezeru v cestě protože v adresáři "Users" mám osobní adresář ve tvaru "Jmeno(mezera)Příj­mení". Vyzkoušel jsem soubor.xml vygenerovat s cestou bez mezery a bez mnou provedené úpravy v metodě "formatuj()" a funguje! 🙂 Pokud to někdo má stejně jako já, dejte si na to POZOR!
Díky za podporu!

Editováno 8.3.2022 8:25
 
Odpovědět
8.3.2022 8:25
Avatar
Atrament
Supertvůrce
Avatar
Odpovídá na Michal Hloušek
Atrament:8.3.2022 8:47

Asi bude lepší, když ta explicitní specifikace použitého protokolu tam bude, cestám bez mezery to neublíží. Já to tam pak doplním...

 
Odpovědět
8.3.2022 8:47
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 21. Zobrazit vše