Hallo,
in folgender XML-Datei möchte ich beispielsweise das Element "city" mit dem Attribut "name=Aalen" komplett löschen, also inklusive aller Kindselemente von "Aalen".
Dazu habe ich folgende Java-Klasse erstellt:
Als Fehlermeldung bekomme ich
Exception in thread "main" java.util.ConcurrentModificationException: The ContentList supporting the FilterList this iterator is processing has been modified by something other than this Iterator.
at org.jdom2.ContentList$FilterListIterator.checkConcurrent(ContentList.java:1309)
at org.jdom2.ContentList$FilterListIterator.next(ContentList.java:1357)
at org.jdom2.ContentList$FilterListIterator.next(ContentList.java:1260)
at com.linuxmaker.calculator.exercise.Remove.main(Remove.java:25)
Jetzt bin ich etwas überfragt, wie ich ein XML-Element komplett löschen kann.
Grüße
Wambui
in folgender XML-Datei möchte ich beispielsweise das Element "city" mit dem Attribut "name=Aalen" komplett löschen, also inklusive aller Kindselemente von "Aalen".
Code:
<?xml version="1.0" encoding="UTF-8"?>
<costcalculator>
<city name="München">
<distance>221.357</distance>
<duration>2.3294444444444444</duration>
<monthlyticket>547.00</monthlyticket>
<roundtripticket>114.0</roundtripticket>
<hotelcosts>0.00</hotelcosts>
<publictransport>false</publictransport>
</city>
<city name="Frankfurt">
<distance>204.365</distance>
<duration>2.0494444444444446</duration>
<monthlyticket>467.00</monthlyticket>
<roundtripticket>126.00</roundtripticket>
<hotelcosts>0.00</hotelcosts>
<publictransport>false</publictransport>
</city>
<city name="Köln">
<distance>367.153</distance>
<duration>3.4047222222222224</duration>
<monthlyticket>292.40</monthlyticket>
<roundtripticket>185.00</roundtripticket>
<hotelcosts>49.00</hotelcosts>
<publictransport>false</publictransport>
</city>
<city name="Aalen">
<distance>78.111</distance>
<duration>0.9852777777777778</duration>
<monthlyticket>233.30</monthlyticket>
<roundtripticket>88.56</roundtripticket>
<hotelcosts>50.00</hotelcosts>
</city>
Dazu habe ich folgende Java-Klasse erstellt:
Code:
package com.example.exercise;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
public class Remove {
public static void main(String[] args) {
String xmlFile = "/home/wambui/Data/City.xml";
String cityName = "Aalen";
try {
SAXBuilder builder = new SAXBuilder();
Document doc = (Document) builder.build(xmlFile);
Element costCalculator = doc.getRootElement();
Iterator<Element> cities = costCalculator.getChildren("city").iterator();
while (cities.hasNext()) {
Element city = (Element) cities.next();
if (cityName.equals(city.getAttribute("name").getValue())) {
costCalculator.removeContent(city);
}
}
} catch (JDOMException | IOException e) {
e.printStackTrace();
}
}
}
Als Fehlermeldung bekomme ich
Exception in thread "main" java.util.ConcurrentModificationException: The ContentList supporting the FilterList this iterator is processing has been modified by something other than this Iterator.
at org.jdom2.ContentList$FilterListIterator.checkConcurrent(ContentList.java:1309)
at org.jdom2.ContentList$FilterListIterator.next(ContentList.java:1357)
at org.jdom2.ContentList$FilterListIterator.next(ContentList.java:1260)
at com.linuxmaker.calculator.exercise.Remove.main(Remove.java:25)
Jetzt bin ich etwas überfragt, wie ich ein XML-Element komplett löschen kann.
Grüße
Wambui
Zuletzt bearbeitet: