Endnu et DOM/XML/XPath problem

Tags:    java

Jeg er igang med at lave et bruger system til en IRC bot. Brugerene bliver gemt i en XML fil, så de kan loades ind igen, vis programmet skal genstartes.

Her er et eksempel på hvordan XML filen kan se ud:
Fold kodeboks ind/udKode 


Jeg har før postet omkring det problem jeg har nu, nemlig at søge efter en bruger i et DOM tre, og slette den fra det. På det tidspunkt havde jeg en rekrusiv funktion til at søge træet igennem. Det blev foreslået at bruge XPath istedet, hvilket jeg nu er igang med.
Fold kodeboks ind/udJava kode 

Denne funktion får en liste over alle tekst undernoder af nick. Vis en af dem er ligmed navnet på den bruger vi søger, retunere den dens parrents parrent node (noden to niveauer over den, altså den user node den er i)

Problemet er, at den user node IKKE bliver fjernet fra XML dokumentet når jeg kører følgende kode:
Fold kodeboks ind/udJava kode 

linjen: users.remove(getUser(botCmd[1])); sletter brugeren i selve programmet(ikke XML filen, eller DOM træet. Kan godt være det ikke er optimalt at læse bruger status over i et andet objekt, når man nu har et DOM træ, men det kan jeg kigge på senere), dette fungere fint.

outputXML() funktionen ser således ud:
Fold kodeboks ind/udKode 

Men jeg tror ikke det er her problemet ligger, da den fungere fint når jeg vil tilføje brugere til mit dokument.

Håber der er nogle der kan hjælpe :D



Indlæg senest redigeret d. 29.06.2009 20:17 af Bruger #13669
3 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Jeg tror jeg har fundet ud af hvad problemet er: Xpath retunere en kopi af Noden, og ikke en reference til den.(eller hvad, er der nogle der ved om det er rigtigt?)

Men hvordan kommer man uden om dette? Bliver jeg nødt til at søge efter noden på en anden måde?



Har fået det til at virke, på en anden måde:
Fold kodeboks ind/udKode 





Indlæg senest redigeret d. 01.07.2009 12:21 af Bruger #13669
String expression:
Fold kodeboks ind/udKode 


Så sparer du din forløkke, og lader xpath finde den korrekte bruger, som nok går lidt hurtigere, end at iterere dem alle igennem.

Jeg kan desuden kun se du fjerner elementet men gemmer ikke i det oprindelige element.

/J







t