Hallo Zusammen,
ich weiß zu diesem Thema sind schon mehrere Themen offen, aber zu meinem aktuellen Fall finde ich keins, welches mir weiterhilft, deshalb muss ich doch ein eigenes auf machen.
Und zwar handelt es sich um eine XML-Datei (genauer gesagt sogar kml, was aber wie xml behandelt werden kann), in welcher ich bei einem bestimmten Zweig den Text vom Attribut ändern will.
Siehe folgendes Beispiel:
Ich möchte hier bei dem ersten 'Placemark' den name von "Shape 1" zu "Karte1" ändern.
Versucht habe ich es mit folgendem Code:
Aber er bringt mir dann immer eine "java.lang.NullPointerException" Fehlermeldung auf die Zeile 'nameVal.setTextContent("Karte1");' bezogen.
Ich wäre sehr dankbar über jeden Tip an was es liegen könnte.
------
Und meine Zweite Frage wäre noch, ob ihr eine Idee habt wie ich einen weiteren kompletten Element-Zweig einfügen kann, wie in diesemfall z.b. einen 'Placemark', da ich noch weitere Koordinatenfelder brauche zum darstellen, aber ich komm nicht drauf wie das machbar ist und finde auch garkeinen ansatz, da ja die kompletten Attribute und Werte bis auf die Koordinaten und der Name schon drinnen sein soll beim einfügen. Oder kopier ich da einfach einen vorhandenen Zweig und änder ihn, aber dan wäre ich wieder beim problem des änderns.
Bitte lasst mich nicht im Stich und hilft mir!
ich weiß zu diesem Thema sind schon mehrere Themen offen, aber zu meinem aktuellen Fall finde ich keins, welches mir weiterhilft, deshalb muss ich doch ein eigenes auf machen.
Und zwar handelt es sich um eine XML-Datei (genauer gesagt sogar kml, was aber wie xml behandelt werden kann), in welcher ich bei einem bestimmten Zweig den Text vom Attribut ändern will.
Siehe folgendes Beispiel:
HTML:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><kml xmlns="http://earth.google.com/kml/2.2">
<Document>
<name>Mapperz;</name>
<description><![CDATA[Testing out the new My Maps Service from Google Maps]]></description>
<Style id="style5">
<LineStyle>
<color>40000000</color>
<width>3</width>
</LineStyle>
<PolyStyle>
<color>73FF0000</color>
<fill>1</fill>
<outline>1</outline>
</PolyStyle>
</Style>
<Placemark>
<name>Shape 1</name>
<description/>
<styleUrl>#style5</styleUrl>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<tessellate>1</tessellate>
<coordinates>
-118.7850000,34.0623400,0.000000
-118.7843501,34.0423400,0.000000
</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
<Placemark>
<name>Shape 2</name>
<description/>
<styleUrl>#style5</styleUrl>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<tessellate>1</tessellate>
<coordinates>
-118.7850000,34.0623400,0.000000
-118.7843501,34.0423400,0.000000
-118.7920000,34.0522227,0.000000
</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
</Document>
</kml>
Ich möchte hier bei dem ersten 'Placemark' den name von "Shape 1" zu "Karte1" ändern.
Versucht habe ich es mit folgendem Code:
Java:
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(filepath);
Node placemark = doc.getElementsByTagName("Placemark").item(0);
//update point from placemarks
NamedNodeMap nameAttr = placemark.getAttributes();
Node nameVal = nameAttr.getNamedItem("name");
nameVal.setTextContent("Karte1");
//write the content into kml file
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer trans = transFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(filepath));
trans.transform(source, result);
Aber er bringt mir dann immer eine "java.lang.NullPointerException" Fehlermeldung auf die Zeile 'nameVal.setTextContent("Karte1");' bezogen.
Ich wäre sehr dankbar über jeden Tip an was es liegen könnte.
------
Und meine Zweite Frage wäre noch, ob ihr eine Idee habt wie ich einen weiteren kompletten Element-Zweig einfügen kann, wie in diesemfall z.b. einen 'Placemark', da ich noch weitere Koordinatenfelder brauche zum darstellen, aber ich komm nicht drauf wie das machbar ist und finde auch garkeinen ansatz, da ja die kompletten Attribute und Werte bis auf die Koordinaten und der Name schon drinnen sein soll beim einfügen. Oder kopier ich da einfach einen vorhandenen Zweig und änder ihn, aber dan wäre ich wieder beim problem des änderns.
Bitte lasst mich nicht im Stich und hilft mir!