Nie wiem co z tym zrobić. Jeśli chodzi o tą funkcję co wstawiłeś w tej linii miałem błąd
Kopiuj
Element svg = getElementsByTagName("svg").item(0);
więc zmieniłem (nie jestem pewien czy poprawnie)
Kopiuj
Element svg = (Element)doc.getElementsByTagName("svg").item(0);
i moja funkcja do tworzenia kształtu na razie chcę żeby działało dla samych linii
Kopiuj
private Shape createShapeFromXML(Node shape, Document doc)
{
double x1,x2,y1,y2;
NamedNodeMap attrMap;
Line linia;
String nazwa=shape.getNodeName();
attrMap = doc.getElementsByTagName(nazwa).item(0).getAttributes();
x1=Double.parseDouble(attrMap.getNamedItem("x1").getNodeValue());
x2=Double.parseDouble(attrMap.getNamedItem("x2").getNodeValue());
y1=Double.parseDouble(attrMap.getNamedItem("y1").getNodeValue());
y2=Double.parseDouble(attrMap.getNamedItem("y2").getNodeValue());
Line2D line2dz=new Line2D.Double(x1,y1,x2,y2);
linia=new Line(line2dz);
return linia;
}
Chodzi o to, że w taki sposób wczytuje mi tylko jedną pierwszą linię, a rozumiem, że ta petla
Kopiuj
for(int i=0;i<shapes.getLength();i++){
Node shape = shapes.item(i);
Shape parsedShape = createShapeFromXML(shape,doc);
fromFile.add(parsedShape);
}
działa po wszystkich elementach w pliku, a wyświetla mi jedynie tylko pierwszy kształt i to tylko wtedy gdy wpiszę ręcznie "line" do attrMap = doc.getElementsByTagName(nazwa).item(0).getAttributes();, bo wpisując tą zmienną nazwa wywala mi java.lang.NullPointerException. O co chodzi?
ShalomShalom