|
|
|||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||
| Python | doc = xml.dom.ext.reader.Sax2.reader().fromStream(open("jmeno_souboru.xml") |
|---|---|
| Zde používáme třídu reader z modulu xml.dom.ext.reader.Sax2, jež obaluje událostmi řízený parser XML a na základě jím generovaných událostí vytváří DOM strom. | |
| Free Pascal | ReadXMLFile(doc,'jmeno_souboru.xml'); |
| Funkce ReadXMLFile z jednotky xmlread nám zajistí jakési načtení DOM stromu ze souboru a v zájmu našeho duševního zdraví je, abychom příliš nepátrali po tom, jak to dělá. | |
| Java | doc = javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File("jmeno_souboru.xml")); |
| A zde začíná chaos. Velmi složitou cestou přes factory třídu získáme v podstatě další factory třídu, jež umí vytvořit instanci třídy Document načtením ze souboru. Zní to složitě, ale je to vlastně jednoduché, a navíc to umožňuje, že se nemusíme starat o to, která implementace XML se použije. |
| Python | doc = xml.dom.getDOMImplementation().createDocument("jmeny_prostor","korenovy-element",0) |
|---|---|
| Tímhle způsobem se mají dokumenty správně vytvářet v DOM Level 2 a v Pythonu to snad ani nejde jinak, rozhodně jsem nepřišel na to jak. Poslední parametr (0) určuje DTD, a pokud je 0 tak dokument žádné DTD nemá. | |
| Free Pascal (dom) | doc := TXMLDocument.Create; |
| Vytvoření instance třídy TXMLDocument , nic víc, nic míň. | |
| Java | doc = javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument()); |
| Toto rozhodně není jediná možnost, samozřejmě můžeme jít přes DOMImplementation, ale u tohoto mám ověřenu funkčnost. |
| Python | doc = xml.dom.ext.PrettyPrint(doc,open("jmeno_souboru.xml","w")) |
|---|---|
| Vcelku zajímavý přístup, funkce PrettyPrint() z modulu xml.dom.ext vypíše obsah DOM stromu (1. parametr) do proudu (2. nepovinný parmetr) jako XML dokument. Snad jedině dodám, že existuje též funkce Print(), která výstupní dokument neodsazuje. | |
| Free Pascal (xmlwrite) | WriteXMLFile(doc,'jmeno_souboru.xml'); |
| Princip jako u ReadXMLDocument() výše, něco to dělá, funguje to (téměř), vnitřnosti nás radši nezajímají. | |
| Java | javax.xml.transform.TransformerFactory.newInstance().newTransformer().transform(new javax.xml.transform.dom.DOMSource(doc), new javax.xml.transform.stream.StreamResult(new File('jmeno_souboru.xml'))); |
| Zde děláme poměrně zajímavou věc - prázdnou XSLT transformaci, výstupem je kopie vstupu, ovšem v našem případě v jiném formátu - rovnou jako XML dokument. Osobně mě tohle řešení přijde jako poněkud "přes ruku", ale dokumentace Javy toto uvádí jako doporučený postup. Jestli je možné dokument uložit i nějak jinak jsem nezjišťoval, tohle funguje. |
Ovšem vstup, výstup a vytváření objektů postrádá smysl, pokud s nimi neumíme dále pracovat. Dále nás instance třídy Document obvykle příliš nezajímá a pracujeme s jednotlivými uzly (potomky třídy Node) uvnitř. Ale na to se podíváme až příště.
|
Nejsou žádné diskuzní příspěvky u dané položky. Příspívat do diskuze mohou pouze registrovaní uživatelé. | |
|
Administrace serverů |
|
Od 350 Kč/hod |
|
Server housing |
|
Od 1000 Kč/1U |
30.7.2010 9:06 /MaReK Olšavský
Krátký článek pro pythonýry připomíná zlatá pravidla programování (vztažitelná i na jiné jazyky). Pokračujte odkazem na konci článku :-).
Přidat komentář
29.7.2010 14:39 /Radim Kolář
IBM vydala další z řady publikací pro studenty Getting started with open source development. Probírají se licence, obchodní modely, příklady OSS projektů a jak se zapojit do vývoje. Dodatek je věnován krátkému úvodu k DB2 databázi.
Přidat komentář
29.7.2010 7:44 /MaReK Olšavský
Při procesu akvizice SUN Microsystems Oraclem se mluvilo především o MySQL a Java platformě, ale Oracle získal mnohem více zajímavých produktů se širokou uživatelskou základnou, například VirtualBox, ke kterému má poněkud macešský přístup. Bude tu VirtualBox pro běžné uživatele, nebo se s ním máme pomalu rozloučit?
Komentářů: 1
29.7.2010 7:08 /MaReK Olšavský
Pokud se uživatelé distribucí Fedora a Ubuntu těšili na pozimní vydání, která měla přinést GNOME 3.0, mohou svá očekávání zmírnit, GNOME 3.0 bude opožděno, snad jen do března 2011.
Přidat komentář
28.7.2010 8:49 /MaReK Olšavský
Možná pro někoho může být překvapující, že CentOS má majoritní podíl mezi webservery. „Bezplatný RHEL“ trochu překvapivě předstihl vyzdvihovaný Debian i FreeBSD.
Komentářů: 5
29.7.2010 18:24 /
Hynek (Pichi) Vychodil
Re: Kým vyzdvihovaný Debian?
29.7.2010 15:29 /
Radim Kolář
Re: Ruchlost kompilace
29.7.2010 12:40 /
Radim Kolář
Freebsd
29.7.2010 12:35 /
Radim Kolář
mne pada
29.7.2010 12:35 /
Slavomir
Rychla maska