Hallo
Ich habe eine XML datei die folgendermaßen aufgebaut ist:
[XML]
<root>
<data trigger="hund">
der hund heist Julian
</data>
<data trigger="katze">
Die katze hat bestimmt wieder gekifft!
</data>
<data trigger="hund">
er kann gut auto fahren
</data>
</root>
[/XML]
FRAGE 1:
Jetzt moechte ich z.B. den zweiten eintrag mit dem trigger "hund" entfernen"
Ich rufe also removeData("hund", 2); auf.
Aber was muss in der inneren if schleife stehen damit der ganze <data> block geloescht wird?
e.removeContent();
e.removeAttribute(str);
Die beiden Sachen reichen nicht, dann steht da noch so etwas wie: <data trigger="hund"></data>
FRAGE 2:
Ich habe auch eine Funktion die einen neuen Eintrag hinzu fuegt:
Das sieht dann aber haeslich aus weil er keine Zeilen umbrueche macht:
[XML]
<root>
<data trigger="hund">
der hund heist Julian
</data>
<data trigger="katze">Die katze hat bestimmt wieder gekifft!</data><data>trigger="hund">er kann gut auto fahren</data></root>
[/XML]
Gibt es eine Funktion die, die Zeilenumbruehe hinzu fuegt?
Vielen dank!
lord-carlos
Ich habe eine XML datei die folgendermaßen aufgebaut ist:
[XML]
<root>
<data trigger="hund">
der hund heist Julian
</data>
<data trigger="katze">
Die katze hat bestimmt wieder gekifft!
</data>
<data trigger="hund">
er kann gut auto fahren
</data>
</root>
[/XML]
FRAGE 1:
Jetzt moechte ich z.B. den zweiten eintrag mit dem trigger "hund" entfernen"
Java:
public void removeData(String str, int c)
throws JDOMException, IOException {
int a = 0;
SAXBuilder b = new SAXBuilder();
try{
Document doc = b.build("src/test_1/data.xml");
Iterator<Element> i = doc.getRootElement().getChildren().iterator();
while (i.hasNext()) {
Element e = i.next();
String name = e.getAttributeValue("trigger");
if (name.equals(str)) {
if(a==c) {
e.removeContent();
e.removeAttribute(str);
XMLOutputter outputter = new XMLOutputter();
outputter.output(doc, System.out);
}
a++;
}
}
} catch (IOException e) {
System.out.println(e);
}
}
Ich rufe also removeData("hund", 2); auf.
Aber was muss in der inneren if schleife stehen damit der ganze <data> block geloescht wird?
e.removeContent();
e.removeAttribute(str);
Die beiden Sachen reichen nicht, dann steht da noch so etwas wie: <data trigger="hund"></data>
FRAGE 2:
Ich habe auch eine Funktion die einen neuen Eintrag hinzu fuegt:
Java:
public void addData(String trigger, String str) throws JDOMException, IOException {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build("src/test_1/data.xml");
Element root = doc.getRootElement();
Element newItem = new Element("data");
newItem.setAttribute("trigger", trigger);
newItem.setText(str);
root.addContent(newItem);
XMLOutputter outputter = new XMLOutputter();
outputter.output(doc, new FileOutputStream("src/test_1/data.xml"));
}
Das sieht dann aber haeslich aus weil er keine Zeilen umbrueche macht:
[XML]
<root>
<data trigger="hund">
der hund heist Julian
</data>
<data trigger="katze">Die katze hat bestimmt wieder gekifft!</data><data>trigger="hund">er kann gut auto fahren</data></root>
[/XML]
Gibt es eine Funktion die, die Zeilenumbruehe hinzu fuegt?
Vielen dank!
lord-carlos