ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
2995
2995
EMPFEHLEN
-
Hallo!
Ich habe eine XML-Datei in der ich bestimmte Elemente löschen möchte. Hier erstmal die XML:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
<userData> <user id="7"> <name>d</name> <pass>NWoZK3kTsExUV00Ywo1G5jlUKKs=</pass> </user> <user id="8"> <name>q</name> <pass>NWoZK3kTsExUV00Ywo1G5jlUKKs=</pass> </user> <user id="9"> <name>w</name> <pass>NWoZK3kTsExUV00Ywo1G5jlUKKs=</pass> </user> </userData>
Ich möchte jetzt z. B. den User mit der id 8 komplett mit allen Unterelementen löschen. Ich schaffe es alle Unterelemente zu löschen mit:
Code :1 2 3 4 5
if(id_counter == tmpUser.getID()) { entityElement.removeChild("name"); entityElement.removeChild("pass"); }
Leider bleibt dann das Elemente User als leeres Element übrig.
Eine andere Möglichkeit die ich ausprobiert habe ist direkt vom Root aus das Element zu löschen, mit dem Problem das ich nur den ersten User löschen kann und nicht den, den ich gerne hätte:
Code :1 2 3 4
if(id_counter == tmpUser.getID()) { UserData.removeChild("user"); }
Es schein so als ob der Iterator nicht auf dem richtigen Element steht.
Kann man den Iterator auf ein bestimmtes Element setzten? Oder gibt es eine andere Möglichkeit.
Danke im Voraus.
Gruß Ratze
-
Ich nehme an Du verwendest JDOM?
Eine Möglich das zu machen wäre dann (aus dem Kopf)
Falls ich entgegen meiner Gewohnheiten mal einen hilfreichen Beitrag schreibe, freu ich mich über eine positive Bewertung.
-
Mit deiner Lösung komme ich leider noch nicht weiter. Ich habe aber in einem Buch einen Ansatz gefunden und ihn mal umgesetzt:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Document doc = new Document(); Element root = new Element("userData"); doc.setRootElement(root); Iterator it; Element UserData; SAXBuilder sxbuild = new SAXBuilder(); InputSource is = new InputSource(filename); try { doc = sxbuild.build(is); Content test = doc.getRootElement().removeContent(1); List li = doc.getRootElement().getContent(); it = li.iterator(); } catch (IOException e) { e.printStackTrace(); return; } catch (JDOMException e) { e.printStackTrace(); return; }
Damit löscht er das erste Child-Element nach dem Root, z. B. User 7.
Man soll laut Buch über "Content test = doc.getRootElement().removeContent(1);" das zu löschende Element auswählen können. In dem Buchbsp. ist es removeContent(0); um das erste zu löschen, da passiert leider nichts. Bei (1) löscht er bei mir wirklich das erste Element, wenn ich allerdings (2) (3) usw. auswähle passiert nichts.
-
Wo hängst Du mit meinem Ansatz? Was klappt da nicht? Wie gesagt, ich hab das so aus dem Kopf hingepinselt, könnt sein, das es da noch was Fehlt (hoffe aber nicht).
Element.removeContent(1) ist hier [1] in der API. Leider hab ich auf nen schnellen Blick nicht entdeckt, ob index bei 0 oder bei 1 anfängt, würde aber ganz stark auf 0 tippen.
[1] http://jdom.org/docs/apidocs/org/jdo...oveContent(int)
GrußFalls ich entgegen meiner Gewohnheiten mal einen hilfreichen Beitrag schreibe, freu ich mich über eine positive Bewertung.
Ähnliche Themen
-
jdom Element - Verweis auf "parent" löschen
Von Orbit im Forum JavaAntworten: 1Letzter Beitrag: 02.04.08, 22:16 -
Bei JDOM Element XPath ermitteln
Von fsmarine im Forum JavaAntworten: 3Letzter Beitrag: 25.02.08, 14:32 -
JDOM - bestimmtes Child löschen !
Von Chimaira im Forum JavaAntworten: 4Letzter Beitrag: 21.02.08, 06:36 -
JDOM Problem mit Element.getChild()
Von danielandross im Forum JavaAntworten: 0Letzter Beitrag: 05.07.07, 16:56 -
JDOM Element durchsuchen
Von cloda im Forum JavaAntworten: 0Letzter Beitrag: 28.08.06, 10:37





Zitieren
Login





