ARCHIV |
|||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
Programujeme s XML (5.) - DOM v Javě IIMinule jsme si zopakovali načítání a ukládání dokumentů. Dnes se tedy podíváme, jak náš dokument propojíme s tabulkou.
Pokud chceme v komponentě
Implementaci prvních tří metod a metody public Object getValueAt(int row, int col) { Element it = ((Element)doc.getDocumentElement().getElementsByTagName("person").item(row)); if (it==null) return null; Element el = (Element)it.getElementsByTagName(tags[col]).item(0); if (el==null) return null; Text text = (Text)el.getFirstChild(); if (text==null) return null; return text.getData(); }
Nejprve z kořenového elementu dokumentu vybereme všechny elementy s názvem public void setValueAt(Object value, int row, int col) { Element it = ((Element)doc.getDocumentElement().getElementsByTagName("person").item(row)); if (it==null) return; Element el = (Element)it.getElementsByTagName(tags[col]).item(0); if (el==null) return; Text newText = doc.createTextNode(value.toString()); while (el.getFirstChild()!=null){ el.removeChild(el.getFirstChild()); } el.appendChild(newText); } Metoda pro změnu obsahu buňky je nápadně podobná předchozí, středem je též nalezení odpovídajícího elementu, se kterým budeme manipulovat, tentokrát ovšem data nečteme, ale přepisujeme. Nejprve si vytvoříme nový textový uzel reprezentující novou hodnotu buňky (Není nejmenší důvod, proč toto dělat jako první krok, ale zdrojový kód přecejenom takto vypadá poněkud uhlazeněji.). Poté v cyklu smažeme všechny dceřiné uzly našeho elementu (je docela škoda, že autoři DOMu na toto nevyhradili speciální metodu). Nakonec vložíme nový obsah, tj. textový uzel, který jsme si dříve vytvořili.
Naše ukázka však není příliš optimální, bylo by vhodné v metodě public void setValueAt(Object value, int row, int col) { Element it = ((Element)doc.getDocumentElement().getElementsByTagName("person").item(row)); if (it==null) return; Element el = (Element)it.getElementsByTagName(tags[col]).item(0); if (el==null) { el = doc.createElement(tags[col]); it.appendChild(el); }; Text newText = doc.createTextNode(value.toString()); while (el.getFirstChild()!=null){ el.removeChild(el.getFirstChild()); } el.appendChild(newText); }
Toto řešení by nám případně umožnilo odstranit vytváření těchto elementů z metody
Další jistě užitečnou optimalizaci by představovalo umístění instance seznamu uzlů vraceného často používanou konstrukcí Příště rozbor naší ukázky uzavřeme čtyřmi metodami implementujícími funkcionalitu čtyř tlačítek "Add", "Delete", "Move up" a "Move down" u dolní (jižní ^_~) hrany okna naší aplikace.
Související články
Předchozí Celou kategorii (seriál) Další
Programujeme s XML (1.) Document Object Model
Programujeme s XML (2.) - DOM v rychlíku Programujeme s XML (3.) - Vytváříme uzly Programujeme s XML (4.) - DOM v Javě Programujeme s XML (6.) - DOM v Javě III. Programujeme s XML (7.) - Simple API for XML Programujeme s XML (8.) - XSL Programujeme s XML (9.) - Úvod do XSLT Programujeme s XML (10.) - Cyklíme v XSLT Programujeme s XML (11.) - Základy jazyka XPath Programujeme s XML (12.) - XPath a zpracování dat Programujeme s XML (13.) - XPath a řetězce Programujeme s XML (14.) - Podmínky v XSLT Programujeme s XML (15.) - Ovlivňujeme výstup Programujeme s XML (16.) - Metody výstupu v XSLT Programujeme s XML (17.) - Funkce v XSLT Programujeme s XML (18.) - XSLT a více souborů Programujeme s XML (19.) - XSLT v praxi Předchozí Celou kategorii (seriál) Další
|
Vyhledávání software
Vyhledávání článků
28.11.2018 23:56 /František Kučera 12.11.2018 21:28 /Redakce Linuxsoft.cz 6.11.2018 2:04 /František Kučera 4.10.2018 21:30 /Ondřej Čečák 18.9.2018 23:30 /František Kučera 9.9.2018 14:15 /Redakce Linuxsoft.cz 12.8.2018 16:58 /František Kučera 16.7.2018 1:05 /František Kučera
Poslední diskuze
31.7.2023 14:13 /
Linda Graham 30.11.2022 9:32 /
Kyle McDermott 13.12.2018 10:57 /
Jan Mareš 2.12.2018 23:56 /
František Kučera 5.10.2018 17:12 /
Jakub Kuljovsky | |||
ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze |