Hallo,
ich bin grade dabei anhand einer XML Konfigurationsdatei Objekte zu erstellen und halt generell erst einmal ein wenig mti XML umgehen. Ich bin dabei auf ein mehr oder weniger kleines "Problem" gestoßen.
Ich habe mich hier (http://www.java-samples.com/showtutorial.php?tutorialid=152) erst einmal ein wenig zum Thema XML eingelesen und auch sonst in der Doku etc. nachgelesen.
Da gibt es ja diese Methode um das Dokument zu parsen (unter dem Punkt Using Dom Punkt b). Allerdings habe ich in meiner XML Datei schon einige unterschiedliche Tags und ich wollte dafür dann einen eigenen Teil erstellen, also ab if.
Also anstatt diesem Teil hier:
das:
und dann ebend eine Methode um die Elemente zu holen und zu erstellen.
Aber bei dem Punkt
Müsste dann ja immer eine andere Methode stehen. Wie kann man das machen, das ich da je unterschiedliche Methoden aufrufe aber trotzdem die Methode allgemein halte? Es macht ja wenig Sinn, die Methode 10x oder mehr zu machen und dabei sind dann ja nur die NodeList, das Objekt, die Methode die aufgerufen werden soll und die ArrayList, zu der das Element dann hinzugefügt werden soll oder?
Die Methoden sähen dann ja auch so ähnlich aus, wie in dem Tutorial unter Punkt c)
Nur das sich dann natürlich noch der Rückgabetyp zu ebend dem Objekt ändern würde. Mein Ansatz macht doch da durchaus Sinn oder nicht?
Ich habe jetzt nur ebend Probleme mit dieser Methode, die dann da aufgerufen werden soll. Kann man also irgendwie die Methode da als Parameter definieren, die dann bei
aufgerufen werden soll?
ich bin grade dabei anhand einer XML Konfigurationsdatei Objekte zu erstellen und halt generell erst einmal ein wenig mti XML umgehen. Ich bin dabei auf ein mehr oder weniger kleines "Problem" gestoßen.
Ich habe mich hier (http://www.java-samples.com/showtutorial.php?tutorialid=152) erst einmal ein wenig zum Thema XML eingelesen und auch sonst in der Doku etc. nachgelesen.
Da gibt es ja diese Methode um das Dokument zu parsen (unter dem Punkt Using Dom Punkt b). Allerdings habe ich in meiner XML Datei schon einige unterschiedliche Tags und ich wollte dafür dann einen eigenen Teil erstellen, also ab if.
Also anstatt diesem Teil hier:
Java:
private void parseDocument(){
//get the root element
Element docEle = dom.getDocumentElement();
//get a nodelist of elements
NodeList nl = docEle.getElementsByTagName("Employee");
if(nl != null && nl.getLength() > 0) {
for(int i = 0 ; i < nl.getLength();i++) {
//get the employee element
Element el = (Element)nl.item(i);
//get the Employee object
Employee e = getEmployee(el);
//add it to list
myEmpls.add(e);
}
}
}
das:
Java:
private void parseDocument()
{
//get the root element
Element docEle = dom.getDocumentElement();
//get a nodelist of elements
NodeList nl1 = docEle.getElementsByTagName("Employee");
NodeList nl2 = docEle.getElementsByTagName("Customer");
NodeList nl3 = docEle.getElementsByTagName("Prdouct");
// usw.
getElement(nl1, Employee);
getElement(nl2, Customer);
// usw ..
}
und dann ebend eine Methode um die Elemente zu holen und zu erstellen.
Java:
private void getElement(NodeList nl, Object obj, ArrayList al) // Methode als Parameter?
{
if(nl != null && nl.getLength() > 0)
{
for(int i = 0 ; i < nl.getLength();i++)
{
//get the employee element
Element el = (Element)nl.item(i);
//get the Employee object
obj = getEmployee(el); // oder ebend getCustomer oder wie auch immer
//add it to list
al.add(obj);
}
}
}
Aber bei dem Punkt
Java:
Employee e = getEmployee(el);
Müsste dann ja immer eine andere Methode stehen. Wie kann man das machen, das ich da je unterschiedliche Methoden aufrufe aber trotzdem die Methode allgemein halte? Es macht ja wenig Sinn, die Methode 10x oder mehr zu machen und dabei sind dann ja nur die NodeList, das Objekt, die Methode die aufgerufen werden soll und die ArrayList, zu der das Element dann hinzugefügt werden soll oder?
Die Methoden sähen dann ja auch so ähnlich aus, wie in dem Tutorial unter Punkt c)
Java:
private Employee getEmployee(Element empEl) {
//for each <employee> element get text or int values of
//name ,id, age and name
String name = getTextValue(empEl,"Name");
int id = getIntValue(empEl,"Id");
int age = getIntValue(empEl,"Age");
String type = empEl.getAttribute("type");
//Create a new Employee with the value read from the xml nodes
Employee e = new Employee(name,id,age,type);
return e;
}
Nur das sich dann natürlich noch der Rückgabetyp zu ebend dem Objekt ändern würde. Mein Ansatz macht doch da durchaus Sinn oder nicht?
Ich habe jetzt nur ebend Probleme mit dieser Methode, die dann da aufgerufen werden soll. Kann man also irgendwie die Methode da als Parameter definieren, die dann bei
Java:
obj =