![]() |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
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ě.
|
||
KOMENTARZE
Nie ma komentarzy dla tej pozycji. |
||
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
|
1. |
Pacman linux Download: 5096x |
2. |
FreeBSD Download: 9311x |
3. |
PCLinuxOS-2010 Download: 8800x |
4. |
alcolix Download: 11190x |
5. |
Onebase Linux Download: 9910x |
6. |
Novell Linux Desktop Download: 0x |
7. |
KateOS Download: 6459x |
1. |
xinetd Download: 2623x |
2. |
RDGS Download: 937x |
3. |
spkg Download: 5247x |
4. |
LinPacker Download: 10393x |
5. |
VFU File Manager Download: 3396x |
6. |
LeftHand Mała Księgowość Download: 7485x |
7. |
MISU pyFotoResize Download: 3090x |
8. |
Lefthand CRM Download: 3760x |
9. |
MetadataExtractor Download: 0x |
10. |
RCP100 Download: 3373x |
11. |
Predaj softveru Download: 0x |
12. |
MSH Free Autoresponder Download: 0x |