Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 7. diel - Zápis XML súborov SAXom v Jave

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
karolko
Člen
Avatar
karolko:22.1.2016 12:19

preco nejde ten kod so zanorenim
xsw = new IndentingXMLStre­amWriter(xof.cre­ateXMLStreamWri­ter(new FileWriter("")));

bez zanorenia sa to tako prehliada a kazdy prehliadac mi vypise, ze dokuemnt je zle sformatovany...
som tak trosku beginner, ale mam snahu :)

Avatar
Jan Kašpar
Člen
Avatar
Odpovedá na karolko
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

Editované
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é?

Editované
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.

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

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

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.

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

Avatar
Atrament
Člen
Avatar
Odpovedá na Michal Hloušek
Atrament:8.3.2022 1:21

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

Avatar
Odpovedá 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!

Editované
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 27.