|
||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
Software (10844)
|
Programujeme s XML (3.) - Vytváříme uzlyJiž umíme vcelku rozumně zpracovat dokument, který od někud načteme,
co když ovšem potřebujeme vytvořit celý v paměti a nebo do existujícího
něco připsat?
Právě proto má třída Vkládáme elementyNejprve vytvoříme instanci (zatím prázdného) elementu, který chceme vložit:
>>> element = doc.createElement("prvni-element") A ten poté vložíme někam do dokumentu, třeba na konec kořenového elementu:
>>> doc.documentElement.appendChild(element)
Zde narážíme na první místo, kde reálně hrozí, že způsobíme nějakou
výjimku. DOM zná jeden druh výjimky, třídu
>>> doc2.documentElement.appendChild(element)
A zde hned vidíme, že elementy vytvořené voláním metod jedné instance třídy
Exception in thread "main" org.apache.crimson.tree.DomEx: WRONG_DOCUMENT_ERR: That node doesn't belong in this document.
neboli výjimku
Též můžeme vyvolat výjimku
Poslední výjimkou ke které může dojít, je Vkládáme textová data, komentáře a sekce CDATA
Všechny tři tyto objekty jsou vlastně totéž - text v dokumentu a liší
se pouze syntaxí a dalším zpracováním. Je tedy logické, že jsou všechny
odvozeny od společného předka, třídy
>>> comment = doc.createComment("Ja jsem komentar") Musíme si ovšem dát pozor, co se snažíme do dokumentu vložit, obecně není dobře pokud se snažime vložit nějaké netisknutelné znaky mimo mezery, tabulátoru, nového řádku a podobně. Často se nám totiž může povést vyrobit dokument, který po uložení do souboru již nepůjde načíst. Další zrada spočíva v tom, že zatímco v textových uzlech jsou případné výskyty speciálních znaků (>, <, " ...) za entity nahrazovány automaticky, v komentářích a sekcích CDATA se tak neděje, musíme si tedy dát pozor na výskyt sekvence "-->", respektive "]]>".
>>> bc = doc.createComment("Rozbity --> komentar") Vytváříme instrukce pro zpracování
Instrukce pro zpracování jsou vlastně také textová data, ale nejsou odvozeny od třídy
>>> pi = doc.createProcessingInstruction("php","echo \"Hello World\";") Ještě je možné vkládat odkazy na entity, ale toto téma si necháme na později, do případného dílu o entitách. Osobně totiž považuji zpracování entit za jednu z nejnepřehlednějších části Document Object Modelu. Tímto konstatováním bych dnešní díl zakončil a doufám, že se sejdeme u dalšího pokračování, kde se vrhneme na první poněkud souhrnější ukázku, jednoduchou databázi.
|
Search Software
Search Google
|
||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |