hi,
ich soll eine Liste mit Büchern, CDs etc. aus einem XML-File (Struktur siehe unten) mit DOM parsen und die Struktur mit dem Composite-Pattern aufbauen. Schließlich soll der User dann in der Konsole den Namen eines Listenobjektes eingeben und die Konsole soll den dazugehörigen Preis zeigen.
Bevor ich aber den letzten Punkt der Aufgabenstellung angehen kann, habe ich aber noch folgende Probleme:
- ich konnte das File zwar parsen, aber ich habe keine Idee, wie ich die Listenobjekte weiterverarbeiten soll ...
- ich weiß zwar über das Composite-Pattern bescheid, aber bei dieser Aufgabenstellung weiß ich nicht, wie die Leaf- und Composition-Klassen aussehen sollen
Das hier habe ich bis jetzt:
[XML]<list name="root">
<book name="B1" price="30" isbn="123"/>
<list name="L1">
<book name="B2" price="20" isbn="234"/>
<list name="L2">
<cd name="C1" price="15"/>
<cd name="C2" price="5"/>
<book name="B3" price="10" isbn="345"/>
</list>
<cd name="C3" price="15"/>
<book name="B4" price="60" isbn="456"/>
</list>
</list>[/XML]
Hat jemand Tipps für mich, wie ich jetzt weitermachen muss? Würde mir sehr helfen, danke im Voraus!
ich soll eine Liste mit Büchern, CDs etc. aus einem XML-File (Struktur siehe unten) mit DOM parsen und die Struktur mit dem Composite-Pattern aufbauen. Schließlich soll der User dann in der Konsole den Namen eines Listenobjektes eingeben und die Konsole soll den dazugehörigen Preis zeigen.
Bevor ich aber den letzten Punkt der Aufgabenstellung angehen kann, habe ich aber noch folgende Probleme:
- ich konnte das File zwar parsen, aber ich habe keine Idee, wie ich die Listenobjekte weiterverarbeiten soll ...
- ich weiß zwar über das Composite-Pattern bescheid, aber bei dieser Aufgabenstellung weiß ich nicht, wie die Leaf- und Composition-Klassen aussehen sollen
Das hier habe ich bis jetzt:
[XML]<list name="root">
<book name="B1" price="30" isbn="123"/>
<list name="L1">
<book name="B2" price="20" isbn="234"/>
<list name="L2">
<cd name="C1" price="15"/>
<cd name="C2" price="5"/>
<book name="B3" price="10" isbn="345"/>
</list>
<cd name="C3" price="15"/>
<book name="B4" price="60" isbn="456"/>
</list>
</list>[/XML]
Java:
public class Composite {
private String name;
private int price;
private int isbn;
public Composite(String name, int price, int isbn) {
this.name = name;
this.price = price;
this.isbn = isbn;
}
public String getName() {
return name;
}
public int getPrice() {
return price;
}
public int getISBN() {
return isbn;
}
public void print() {
System.out.println(price);
}
}
Java:
import java.io.*;
import java.util.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
public class CompositeDemo1
{
Document document;
String XMLname;
public CompositeDemo1(String XMLname) {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = builderFactory.newDocumentBuilder();
document = builder.parse(new FileInputStream(XMLname));
Element rootElement = document.getDocumentElement();
String rootName = rootElement.getNodeName();
NodeList nodeChildren = null;
nodeChildren = rootElement.getChildNodes();
ArrayList<Composite> myItems = new ArrayList<Composite>();
nodeChildren = rootElement.getElementsByTagName ("list");
String name1="";
int price1=0;
int isbn1=0;
for (int i=0; i<nodeChildren.getLength(); i++) {
Composite c1 = new Composite(name1, price1, isbn1);
myItems.add(c1);
}
}
catch (ParserConfigurationException e) { e.printStackTrace(); }
catch (SAXException e) { e.printStackTrace(); }
catch (IOException e) { e.printStackTrace(); }
}
public static void main(String[] args) {
try {
BufferedReader r1 = new BufferedReader (new InputStreamReader(System.in));
System.out.println("Give the filename of an XML file to parse:");
String input = r1.readLine();
CompositeDemo1 cd1 = new CompositeDemo1(input);
}
catch (IOException e) { e.printStackTrace(); }
} }
Hat jemand Tipps für mich, wie ich jetzt weitermachen muss? Würde mir sehr helfen, danke im Voraus!