Hallo in die Runde,
bin kein Programmieranfänger, jedoch Java-Anfänger.
Hab nach vielem Googlen folgende Klassen bzw. folgendes Programm zur Bearbeitung eines XML-Files gebaut. Als Kommentar unten eingebaut ist meine Frage, offenbar habe ich bei der Klasse "RTMeasure" etwas falsch gemacht .. aber was?
Den Inhalt von "RTMeasure" hatte ich vorher innerhalb "AddRTItem", dort funktionierte alles bestens. Da jedoch mehrere Measures zugefügt werden sollen, möchte ich diesen Part natürlich separieren.
Ich vermute, dass ich den Mechanismus der Zuweisung eines Objectes (hier "measureelement" zur eigentlichen Klasse ("RTMeasure") noch nicht richtig begriffen habe.
Besten Danke für weiterführende Hinweise!
bin kein Programmieranfänger, jedoch Java-Anfänger.
Hab nach vielem Googlen folgende Klassen bzw. folgendes Programm zur Bearbeitung eines XML-Files gebaut. Als Kommentar unten eingebaut ist meine Frage, offenbar habe ich bei der Klasse "RTMeasure" etwas falsch gemacht .. aber was?
Den Inhalt von "RTMeasure" hatte ich vorher innerhalb "AddRTItem", dort funktionierte alles bestens. Da jedoch mehrere Measures zugefügt werden sollen, möchte ich diesen Part natürlich separieren.
Ich vermute, dass ich den Mechanismus der Zuweisung eines Objectes (hier "measureelement" zur eigentlichen Klasse ("RTMeasure") noch nicht richtig begriffen habe.
Besten Danke für weiterführende Hinweise!
Java:
import java.io.*;
import java.util.*;
import org.jdom2.*;
import org.jdom2.input.*;
import org.jdom2.output.*;
public class XMLTool {
public static void main(String[] args) throws Exception {
String filename = "xml\\pew.xml";
PEWDoc myPEW = new PEWDoc();
myPEW.AddRTItem(filename);
}
}
class PEWDoc {
static void AddRTItem( String filename ) throws Exception {
Document doc = new SAXBuilder().build( filename );
Element workspace = doc.getRootElement();
Element rtitems = workspace.getChild( "WorkState_v1_2" ).getChild( "RTItems" );
int i = rtitems.getContentSize(); //-> "9"
List<Element> rthosts = rtitems.getChildren();
// * create new Host-Set
String newhost = "Host" + (rthosts.size()+1);
Element hostelement = new Element(newhost);
// díe folgende Zeile soll später n-mal aufgerufen werden:
RTMeasure hostmeasure = new RTMeasure("N99999", "99-Alias-99");
hostelement.addContent(hostmeasure);
// an dieser Stelle habe ich eigentlich ein neues XML-Element mit den
// entsprechenden Attributen erwartet. Beim Debuggen ist jedoch sichtbar, dass "hostmeasure"
// zwar in der Klasse unten Attribute bekommt, diese sind aber hier "verschwunden".
rtitems.addContent(hostelement);
FileWriter writer = new FileWriter(filename);
XMLOutputter outputter = new XMLOutputter();
outputter.setFormat(Format.getPrettyFormat());
outputter.output(doc, writer);
}
}
class RTMeasure extends Element {
public RTMeasure(String hostname, String hostalias){
super();
measureelement = new Element("Measure999");
a = new ArrayList();
Attribute addinfo = new Attribute("AddInfo", "");
a.add(addinfo);
Attribute description = new Attribute("Description", "");
a.add(description);
Attribute duration = new Attribute("Duration", "");
a.add(duration);
Attribute host = new Attribute("Host", hostname);
a.add(host);
Attribute alias = new Attribute("HostAlias", hostalias);
a.add(alias);
measureelement.setAttributes(a);
}
}
public Element measureelement;
public ArrayList a;
}