Hallo zusammen!
ich möchte aus einer XML-Datei lesen und Werte von dieser Datei ändern. Das Lesen der Datei funktioniert schon nicht schlecht, aber wie ich werte ändere weiß ich nicht, bzw. werden nicht in die XML-Datei übertragen. Ich verwende dabei DOM.
Ich weiß, dass das relativ langsam ist. Wenn es etwas gibt, das schneller ist und mit dem man die XML-Datei ändern kann, ohne diese neu zuschreiben, nur her damit. Es sollte aber ohne zusätliche Bibliotheken auskommen.
Hier erstmal den Code, was ich gemacht habe:
und die notwendige xml-Datei:
ich hoffe, dass mir jemand helfen kann. Vielleicht gibts ja auch schon was in diesem Forum, dass ich nicht gefunden habe.
Danke schon mal an alle.
ich möchte aus einer XML-Datei lesen und Werte von dieser Datei ändern. Das Lesen der Datei funktioniert schon nicht schlecht, aber wie ich werte ändere weiß ich nicht, bzw. werden nicht in die XML-Datei übertragen. Ich verwende dabei DOM.
Ich weiß, dass das relativ langsam ist. Wenn es etwas gibt, das schneller ist und mit dem man die XML-Datei ändern kann, ohne diese neu zuschreiben, nur her damit. Es sollte aber ohne zusätliche Bibliotheken auskommen.
Hier erstmal den Code, was ich gemacht habe:
Java:
mport java.awt.Color;
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class XMLReader {
public static final String MAX_SPEED = "maxSpeed";
public static final String ROTATION = "rotation";
public static final String ACC_X = "accX";
public static final String ACC_Y = "accY";
public static final String ACC_Z = "accZ";
DocumentBuilderFactory factory = null;
DocumentBuilder builder = null;
Document document = null;
File xmlSorce;
public XMLReader() {
xmlSorce = new File("RevColor.xml");
factory = DocumentBuilderFactory.newInstance();
try {
builder = factory.newDocumentBuilder();
document = builder.parse(xmlSorce);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Color[] getColors(String visOption){
NodeList color = null;
Node red=null;
Node green = null;
Node blue = null;
int[] tmpColors={0,0,0};
Color[] colors = {null, null, null};
NodeList childs = document.getElementsByTagName(visOption).item(0).getChildNodes();
System.out.println(childs.getLength());
for(int i =0 ; i<childs.getLength(); i++){
if(childs.item(i).getNodeName().equalsIgnoreCase("colorGood")){
color = childs.item(i).getChildNodes();
for (int j=0;j<color.getLength();j++){
if(color.item(j).getNodeName().equals("Red")){
red = color.item(j);
tmpColors[0] = Integer.parseInt(red.getTextContent());
}else if(color.item(j).getNodeName().equals("Green")){
green = color.item(j);
tmpColors[1] = Integer.parseInt(green.getTextContent());
}else if(color.item(j).getNodeName().equals("Blue")){
blue = color.item(j);
tmpColors[2] = Integer.parseInt(blue.getTextContent());
}
}
colors[0] = new Color(tmpColors[0],tmpColors[1], tmpColors[2]);
}
if(childs.item(i).getNodeName().equalsIgnoreCase("colorOK")){
color = childs.item(i).getChildNodes();
for (int j=0;j<color.getLength();j++){
if(color.item(j).getNodeName().equals("Red")){
red = color.item(j);
tmpColors[0] = Integer.parseInt(red.getTextContent());
}else if(color.item(j).getNodeName().equals("Green")){
green = color.item(j);
tmpColors[1] = Integer.parseInt(green.getTextContent());
}else if(color.item(j).getNodeName().equals("Blue")){
blue = color.item(j);
tmpColors[2] = Integer.parseInt(blue.getTextContent());
}
}
colors[1] = new Color(tmpColors[0],tmpColors[1], tmpColors[2]);
}
if(childs.item(i).getNodeName().equalsIgnoreCase("colorBad")){
color = childs.item(i).getChildNodes();
for (int j=0;j<color.getLength();j++){
if(color.item(j).getNodeName().equals("Red")){
red = color.item(j);
tmpColors[0] = Integer.parseInt(red.getTextContent());
}else if(color.item(j).getNodeName().equals("Green")){
green = color.item(j);
tmpColors[1] = Integer.parseInt(green.getTextContent());
}else if(color.item(j).getNodeName().equals("Blue")){
blue = color.item(j);
tmpColors[2] = Integer.parseInt(blue.getTextContent());
}
}
colors[2] = new Color(tmpColors[0],tmpColors[1], tmpColors[2]);
}
}
return colors;
}
void setColor(String visOption, int index, Color color){
NodeList colorNodes = null;
Node red=null;
Node green = null;
Node blue = null;
NodeList childs = document.getElementsByTagName(visOption).item(0).getChildNodes();
System.out.println(childs.getLength());
for(int i =0 ; i<childs.getLength(); i++){
if(childs.item(i).getNodeName().equalsIgnoreCase("colorGood")){
colorNodes = childs.item(i).getChildNodes();
for (int j=0;j<colorNodes.getLength();j++){
if(colorNodes.item(j).getNodeName().equals("Red")){
red = colorNodes.item(j);
red.setTextContent(color.getRed()+"");
}else if(colorNodes.item(j).getNodeName().equals("Green")){
green = colorNodes.item(j);
green.setTextContent(color.getGreen()+"");
}else if(colorNodes.item(j).getNodeName().equals("Blue")){
blue = colorNodes.item(j);
blue.setTextContent(color.getBlue()+"");
}
}
}
}
}
public static void main(String[] args) {
XMLReader reder = new XMLReader();
reder.getColors(XMLReader.ACC_X);
reder.setColor(MAX_SPEED, 0, new Color(215,0,22));
}
}
HTML:
<?xml version="1.0" ?>
<visualColor>
<maxSpeed>
<colorGood>
<Red>0</Red>
<Blue>0</Blue>
<Green>255</Green>
</colorGood>
<colorOK>
<Red>255</Red>
<Blue>255</Blue>
<Green>0</Green>
</colorOK>
<colorBad>
<Red>255</Red>
<Blue>0</Blue>
<Green>0</Green>
</colorBad>
</maxSpeed>
<rotation>
<colorGood>
<Red>0</Red>
<Blue>0</Blue>
<Green>255</Green>
</colorGood>
<colorOK>
<Red>255</Red>
<Blue>255</Blue>
<Green>0</Green>
</colorOK>
<colorBad>
<Red>255</Red>
<Blue>0</Blue>
<Green>0</Green>
</colorBad>
</rotation>
<accX>
<colorGood>
<Red>0</Red>
<Blue>0</Blue>
<Green>255</Green>
</colorGood>
<colorOK>
<Red>255</Red>
<Blue>255</Blue>
<Green>0</Green>
</colorOK>
<colorBad>
<Red>255</Red>
<Blue>0</Blue>
<Green>0</Green>
</colorBad>
</accX>
<accY>
<colorGood>
<Red>0</Red>
<Blue>0</Blue>
<Green>255</Green>
</colorGood>
<colorOK>
<Red>255</Red>
<Blue>255</Blue>
<Green>0</Green>
</colorOK>
<colorBad>
<Red>255</Red>
<Blue>0</Blue>
<Green>0</Green>
</colorBad>
</accY>
<accZ>
<colorGood>
<Red>0</Red>
<Blue>0</Blue>
<Green>255</Green>
</colorGood>
<colorOK>
<Red>255</Red>
<Blue>255</Blue>
<Green>0</Green>
</colorOK>
<colorBad>
<Red>255</Red>
<Blue>0</Blue>
<Green>0</Green>
</colorBad>
</accZ>
</visualColor>
ich hoffe, dass mir jemand helfen kann. Vielleicht gibts ja auch schon was in diesem Forum, dass ich nicht gefunden habe.
Danke schon mal an alle.