ARCHIV |
|||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
Programujeme s XML (6.) - DOM v Javě III.V dnešním díle se podíváme na poslední část naší
aplikace, na operace měnící strukturu souboru, tedy přidávání,
mazání a přeskupování položek. Spodní hrana hlavního okna naší jednoduché aplikace nám nabízí čtyři operace:
Přidáváme položkysynchronized public void addItem(int row) { Element node = doc.createElement("person"); for (int i=0; i<tags.length; i++) node.appendChild(doc.createElement(tags[i])); if (row+1>=rowCount){ doc.getDocumentElement().appendChild(node); } else { doc.getDocumentElement().insertBefore(node, doc.getElementsByTagName("person").item(row+1)); } this.fireTableRowsInserted(row,1); rowCount++; }
Nejprve vytvoříme nový uzel, v cyklu do něj vložíme všechny potřebné podelementy, jejichž názvy jsou v poli Mažeme položkysynchronized public void deleteItem(int row) { if (row==-1) return; doc.getDocumentElement(). removeChild(doc.getElementsByTagName("person").item(row)); rowCount=doc.getDocumentElement(). getElementsByTagName("person").getLength(); this.fireTableRowsDeleted(row,1); }
Při mazání položek pouze smažeme odpovídající element (Implementace DOM někde v podzemí rekurzivně smaže jeho obsah). Přepočítáme počet elementů (stejně dobře bychom mohli pouze dekrementovat proměnnou Měníme pořadí položeksynchronized public void moveUp(int row) { if (row<1) return; Element ref = ((Element)doc.getDocumentElement(). getElementsByTagName("person").item(row-1)); Element it = ((Element)doc.getDocumentElement(). getElementsByTagName("person").item(row)); doc.getDocumentElement().insertBefore(it,ref); } Pokud jsme na prvním řádku (tj na řádku s číslem 0) a nebo není označeno nic, je jasné, že tato akce musí selhat, a proto v případě, kdy číslo označeného řádku je menší než 1, opustíme funkci. Po této kontrole najdeme v dokumentu dva elementy, jednak referenční, před který budeme vkládat a druhak ten element, jenž chceme přesunout. V tomto případě je referenčním elementem ten, který leží nad přesouvaným elementem. synchronized public void moveDown(int row) { if (row>rowCount-2) return; Element it = ((Element)doc.getDocumentElement(). getElementsByTagName("person").item(row)); if (row==rowCount-2){ doc.getDocumentElement().appendChild(it); } else { Element ref = ((Element)doc.getDocumentElement(). getElementsByTagName("person").item(row+2)); doc.getDocumentElement().insertBefore(it,ref); } } Princip je podobný, ale tentokrát musíme ošetřit situaci, kdy kurzor stojí na předposlední položce, a proto nemůžeme použít žádný referenční element, a místo toho přidáváme na konec kořenového elementu metodou appendChild(). Pokud nestojíme na předposlední položce, pracuje metoda podobně jako předchozí, akorát jako referenční používa uzel o dvě položky dál (vkládá se před referenční uzel, kdybychom použili následující, budeme vkládat opět na stejné místo).
Funkčnost předchozích dvou metod ukazuje na to, že jeden element se v dokumentu smí vyskytovat pouze jednou a pokud ho vložíme znovu na jiné místo, dojde k přesunu. Pokud potřebujeme vložit více stejných elementů (nebo jiných uzlů) na různá místa, nebo kopírovat uzly v rámci jednoho dokumentu, s výhodou použijeme metodu cloneNode(). Pokud potřebujeme kopírovat uzly mezi různými dokumenty, zavádí DOM Level 2 metodu importNode() třídy Zde bych prozatím DOM opustil a příště se rychle podíváme na (údajně jednodušší, ale rozhodně rychlejší) rozhraní Simple API for XML neboli SAX.
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 (5.) - DOM v Javě II 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 |