Hi Walter,
iwie komme ich damit noch nicht ganz klar…
Wo sollte ich das denn einfügen? Als Grundlage meiner Entwicklung dient das Projekt von AB-Finnentrop aus einem der ersten Beiträge.
Kannst du mir das anhand dessen nochmal genauer erklären?
Gruß Dennis
PS: Habe eine GUI für den GPX Konverter gebaut: Hier der Code aus beiden Klassen:
Klasse Translator
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public class Translator {
private String Inputfile;
private String Outputfile;
private StreamResult out;
private TransformerHandler th;
private AttributesImpl atts;
private List<String> list;
public Translator(){
}
public void setInputFilename(String s){
Inputfile = s;
}
public String getInputFilename(){
return Inputfile;
}
public void setOutputFilename(String s){
Outputfile = s;
}
public String getOutputFilename(){
return Outputfile;
}
public List<String> einlesen() {
// Einlesen des Files und spliten
FileReader myFile = null;
BufferedReader buff = null;
final List<String> lines = new ArrayList<String>();
try {
myFile = new FileReader(Inputfile);
buff = new BufferedReader(myFile);
String line;
while ((line = buff.readLine()) != null) {
// System.out.println(line); // kontrolle was eingelesen
lines.add(line);
}
} catch (IOException e) {
System.err.println("Error2 :" + e);
} finally {
try {
buff.close();
myFile.close();
} catch (IOException e) {
System.err.println("Error2 :" + e);
}
}
final String[][] valuesArray = new String[lines.size()][];
int cnt = 0;
for (final String line : lines) {
valuesArray[cnt++] = line.split(",");
}
return lines;
}
//Umwandeln der Liste in GPX(XML) Code
public void translate() {
list = einlesen();
try {
out = new StreamResult(Outputfile);
initXML();
for (String str : list) {
process(str);
}
closeXML();
} catch (TransformerConfigurationException ex) {
Logger.getLogger(Translator.class.getName()).log(Level.SEVERE, null, ex);
} catch (SAXException ex) {
Logger.getLogger(Translator.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void initXML() throws TransformerConfigurationException, SAXException {
SAXTransformerFactory tf = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
th = tf.newTransformerHandler();
Transformer serializer = th.getTransformer();
serializer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
th.setResult(out);
th.startDocument();
atts = new AttributesImpl();
th.startElement("", "", "gpx", atts);
}
private void process(final String s) throws SAXException {
String[] elements = s.split(";");
atts.clear();
atts.addAttribute("", "", "lat", "", "" + elements[3]);
atts.addAttribute("", "", "lon", "", "" + elements[4]);
th.startElement("", "", "wpt", atts);
atts.clear();
th.startElement("", "", "name", atts);
String name = "Cell-ID: " + elements[2];
th.characters(name.toCharArray(), 0, name.length());
th.endElement("", "", "name");
th.startElement("", "", "cmt", atts);
th.characters(elements[0].toCharArray(), 0, elements[0].length());
th.endElement("", "", "cmt");
th.startElement("", "", "desc", atts);
String desc = "Standortname: " + elements[1] + "\r\n"+ "Netztyp: " + elements[0] + "\r\n" + "Releasecause: " + elements[5] + " Anzahl: " + elements[6];
th.characters(desc.toCharArray(), 0, desc.length());
th.endElement("", "", "desc");
th.endElement("", "", "wpt");
}
private void closeXML() throws SAXException {
th.endElement("", "", "gpx");
th.endDocument();
}
public boolean start() {
try{
translate();
}catch (ArrayIndexOutOfBoundsException ex){
return false;
}// catch ( ex){
// return false;
// }
return true;
}
}
Klasse FileChooserTest
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JTextField;
import java.awt.Rectangle;
import javax.swing.JButton;
import java.io.*;
import javax.swing.*;
public class FileChooserTest extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JTextField InputFileTextfield = null;
private JTextField OutputFileTextfield = null;
private JButton jButton = null;
private JButton jButton1 = null;
private JButton Generate = null;
Translator t = new Translator(); // @jve:decl-index=0:
/**
* This is the default constructor
*/
public FileChooserTest() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
fc.setSize(new Dimension(557, 336));
this.setSize(661, 248);
this.setContentPane(getJContentPane());
this.setTitle("GPS Translator");
this.setVisible(true);
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getInputFileTextfield(), null);
jContentPane.add(getOutputFileTextfield(), null);
jContentPane.add(getJButton(), null);
jContentPane.add(getJButton1(), null);
jContentPane.add(getGenerate(), null);
}
return jContentPane;
}
/**
* This method initializes InputFilenameTextfield
*
* @return javax.swing.JTextField
*/
private JTextField getInputFileTextfield() {
if (InputFileTextfield == null) {
InputFileTextfield = new JTextField();
InputFileTextfield.setBounds(new Rectangle(115, 32, 515, 35));
InputFileTextfield.setText("Bitte wählen sie eine csv Datei aus");
}
return InputFileTextfield;
}
/**
* This method initializes OutputFileTextfield
*
* @return javax.swing.JTextField
*/
private JTextField getOutputFileTextfield() {
if (OutputFileTextfield == null) {
OutputFileTextfield = new JTextField();
OutputFileTextfield.setBounds(new Rectangle(117, 106, 512, 36));
OutputFileTextfield.setText("Bitte wählen sie als Dateiformat .gpx");
}
return OutputFileTextfield;
}
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
JFileChooser fc = new JFileChooser(); // @jve:decl-index=0:visual-constraint="90,288"
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton("Input File");
jButton.setBounds(new Rectangle(8, 27, 100, 39));
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
if (e.getSource() == jButton) {
int returnVal = fc.showOpenDialog(FileChooserTest.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
InputFileTextfield.setText(file.getAbsolutePath());
}
}
}
});
}
return jButton;
}
/**
* This method initializes jButton1
*
* @return javax.swing.JButton
*/
private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton("Output File");
jButton1.setBounds(new Rectangle(6, 105, 102, 36));
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
if (e.getSource() == jButton1) {
int returnVal = fc.showOpenDialog(FileChooserTest.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
OutputFileTextfield.setText(file.getAbsolutePath());
}
}
}
});
}
return jButton1;
}
public String getInputTextField(){
return InputFileTextfield.getText();
}
public String getOutputTextField(){
return OutputFileTextfield.getText();
}
/**
* This method initializes Generate
*
* @return javax.swing.JButton
*/
private JButton getGenerate() {
if (Generate == null) {
Generate = new JButton("Generate");
Generate.setBounds(new Rectangle(494, 167, 129, 38));
Generate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
t.setInputFilename(getInputTextField());
t.setOutputFilename(getOutputTextField());
if (t.getInputFilename().endsWith("csv") || t.getOutputFilename().endsWith("gpx")|| t.getOutputFilename().endsWith("xml")){
t.start();
JOptionPane.showMessageDialog(null, "Umwandlung erfolgreich abgeschlossen!", "GPS Translator", JOptionPane.OK_CANCEL_OPTION);
}else{
JOptionPane.showMessageDialog(null, "Bitte Eingaben kontrollieren und auf Dateiendung achten", "GPS Translator", JOptionPane.OK_CANCEL_OPTION);
}
}
});
}
return Generate;
}
} // @jve:decl-index=0:visual-constraint="40,17"