1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Problem das Eclipse Ausgabe nicht in Datei schreibt, sondern ausgibt auf "Konsole"

  • mtintel
  • 23. Dezember 2006 um 18:52
  • Unerledigt
  • mtintel
    37
    mtintel
    Mitglied
    Reaktionen
    19
    Punkte
    14.759
    Beiträge
    2.654
    • 23. Dezember 2006 um 18:52
    • #1

    Ich habe einen XML Exporter, der eine XML Datei machen soll, und dort dann die Sachen rein schreibt. Das Problem ist, dass er nicht die Datei macht, und auch nicht die Sachen rein schreibt (wenn man die Datei manuell erstellt), sondern sie einfach ausgibt. Habe es auch mit cmd probiert und nicht nur mit Eclipse, aber dort habe ich ebenfalls das selbe Problem.

    Java
    // fuer XML und DOM
    import org.w3c.dom.*;
    import javax.xml.parsers.*;
    
    
    //fuer Writer
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    
    public class Xml_Exporter_Test
    {
    Document doc = null;
      Element author = null;
      Element lines = null;
      Element title = null;
    static public void main(String [] args )
    {
        XmlDoc XD = new XmlDoc();
        XD.doc = XD.neuesDoc();
        XD.printDOMTree(XD.doc);
    }
    public Document neuesDoc()
      {
        DocumentBuilderFactory docBFac;
        DocumentBuilder docBuild;
        try
        {
        docBFac = DocumentBuilderFactory.newInstance();
        docBuild = docBFac.newDocumentBuilder();
        doc = docBuild.newDocument();
        }
        catch( Exception e )
        {
        System.out.println("Dokument konnte nicht erzeugt werden");
        }
        if (doc != null)
        {
            Element root = doc.createElement("sonnet");
            root.setAttribute("type", "Shakespearean");
    
            author = doc.createElement("author");
    
            Element lastName = doc.createElement("last-name");
            lastName.appendChild(doc.createTextNode("Shakespeare"));
            author.appendChild(lastName);
    
            Element firstName = doc.createElement("first-name");
            firstName.appendChild(doc.createTextNode("William"));
            author.appendChild(firstName);
    
            Element nationality = doc.createElement("nationality");
            nationality.appendChild(doc.createTextNode("British"));
            author.appendChild(nationality);
    
            Element yearOfBirth = doc.createElement("year-of-birth");
            yearOfBirth.appendChild(doc.createTextNode("1564"));
            author.appendChild(yearOfBirth);
    
            Element yearOfDeath = doc.createElement("year-of-death");
            yearOfDeath.appendChild(doc.createTextNode("1616"));
            author.appendChild(yearOfDeath);
    
            root.appendChild(author);
    
    
            title = doc.createElement("title");
            title.appendChild(doc.createTextNode("Sonnet 130"));
            root.appendChild(title);
    
    
            lines = doc.createElement("lines");
    
    
            Element line01 = doc.createElement("line");
            line01.appendChild(doc.createTextNode("My mistress' eyes are nothing like the sun,"));
            lines.appendChild(line01);
    
    
            Element line02 = doc.createElement("line");
            line02.appendChild(doc.createTextNode("Coral is far more red than her lips red."));
            lines.appendChild(line02);
    
    
            root.appendChild(lines);
    
    
            doc.appendChild(root);
    
          }
        return doc;
      }
    /** Prints the specified node, recursively. */
    public void printDOMTree(Node node ) throws IOException 
      {
        File datei = new File("ausgabe.xml");
        FileWriter ausgabeStrom = new FileWriter(datei);
    
        PrintWriter ausgabe = new PrintWriter(ausgabeStrom); // scheibt alles nach System.out
    
    
        int type = node.getNodeType();
        switch (type)
        {
          // print the document element
          case Node.DOCUMENT_NODE: 
            {
              printDOMTree(((Document)node).getDocumentElement() );
              break;
            }
    
    
            // print element with attributes
          case Node.ELEMENT_NODE: 
            {
                ausgabe.println("<");
                ausgabe.print(node.getNodeName());
              NamedNodeMap attrs = node.getAttributes();
              for (int i = 0; i < attrs.getLength(); i++)
              {
                Node attr = attrs.item(i);
    
                ausgabe.print(" " + attr.getNodeName() + 
                        "=\"" + attr.getNodeValue() + 
                        "\"");
              }
              ausgabe.print(">");
    
    
              NodeList children = node.getChildNodes();
              if (children != null)
              {
                int len = children.getLength();
                for (int i = 0; i < len; i++)
                    ausgabe.println(children.item(i));
              }
    
    
              break;
            }
    
    
            // handle entity reference nodes
          case Node.ENTITY_REFERENCE_NODE: 
            {
              ausgabe.print("&");
              ausgabe.print(node.getNodeName());
              ausgabe.println(";");
              break;
            }
    
    
            // print cdata sections
          case Node.CDATA_SECTION_NODE: 
            {
              ausgabe.print("<![CDATA[');
              ausgabe.print(node.getNodeValue());
              ausgabe.println(']]>");
              break;
            }
    
    
            // print text
          case Node.TEXT_NODE: 
            {
              ausgabe.print(node.getNodeValue());
              break;
            }
    
    
            // print processing instruction
          case Node.PROCESSING_INSTRUCTION_NODE: 
            {
              ausgabe.println("<?");
              ausgabe.print(node.getNodeName());
              String data = node.getNodeValue();
              {
                ausgabe.print(" ");
                ausgabe.print(data);
              }
              ausgabe.println("?>");
              break;
            }
        }
    
    
        if (type == Node.ELEMENT_NODE)
        {
          ausgabe.print("</");
          ausgabe.print(node.getNodeName());
          ausgabe.println('>');
        }
    
        ausgabe.close(); // oder ausgabe.flush um Stream offen zu lassen
    
      }  //DOMTree(Node, PrintWriter)
    
    
    }
    Alles anzeigen

    HU: PISWIBibliothekHUStudentPointStatus Neuer Studienplan SammelzeugnisZID
    TU:
    TUWISBibliothekTULehrmittelzentrum TUWEL Neuer Studienplan Unifreie TageZID AbschlussarbeitenPublikationsdatenbank
    Studium: Informatik-Forum REBIRTHMitschriften1 Mitschriften2 Vorlesungs WikiForenkalender
    Allgemein: Apple on CampusUSIUniWikipedia WegfinderUni WegfinderÖffis (VOR)OpenBookMeine WebseiteBücherbörse
    Fehlende/nicht funktionierende
    Links bitte melden :)

  • Paulchen
    1
    Paulchen
    Gast
    • 23. Dezember 2006 um 20:19
    • #2

    Wenn ich die Methode main auf Folgendes umbaue:

    Code
    static public void main(String [] args ) throws Exception
    {
        Xml_Exporter_Test XD = new Xml_Exporter_Test();
        XD.doc = XD.neuesDoc();
        XD.printDOMTree(XD.doc);
    }

    kann ich das Ganze einwandfrei kompilieren und ausführen (Java 1.6.0, build 1.6.0-b105, Ubuntu Linux). Es wird eine Datei ausgabe.xml erzeugt mit folgendem Inhalt:

    Code
    <
    sonnet type="Shakespearean">[author: null]
    [title: null]
    [lines: null]
    </sonnet>
  • mtintel
    37
    mtintel
    Mitglied
    Reaktionen
    19
    Punkte
    14.759
    Beiträge
    2.654
    • 25. Dezember 2006 um 09:41
    • #3
    Zitat von Paulchen

    Wenn ich die Methode main auf Folgendes umbaue
    kann ich das Ganze einwandfrei kompilieren und ausführen

    Ja so geht es, aber er macht den XML Code nicht richtig in der Datei. Wenn man es ohne FileWriter macht, dann geht es, aber mit lustigerweise nicht richtig! Also ich habe das jetzt so ohne FileWriter:

    Code
    import org.w3c.dom.*;
    import javax.xml.parsers.*;
    
    
    public class XmlExporter
    {
        Document doc = null;
        Element RTP_Optionen = null;
        Element Effekt = null;
    
    
        static public void main(String [] args )
        {
            XmlExporter XD = new XmlExporter();
            XD.doc = XD.neuesDoc();
            XD.printDOMTree(XD.doc);
        }
    
        public Document neuesDoc()
        {
            DocumentBuilderFactory docBFac;
            DocumentBuilder docBuild;
    
            try
            {
                docBFac = DocumentBuilderFactory.newInstance();
                docBuild = docBFac.newDocumentBuilder();
                doc = docBuild.newDocument();
            }
    
            catch( Exception e )
            {
                System.out.println("Dokument konnte nicht erzeugt werden");
            }
    
            if (doc != null)
            {
                Element root = doc.createElement("GUI");
                //Aufbau: root.setAttribute("type", "Das_ist_die_Typart");
    
                //Auflistung der RTP Optionen
                RTP_Optionen = doc.createElement("RTP_Optionen");
    
                Element Empfaenger_IP = doc.createElement("Empfaenger_IP");
                Empfaenger_IP.appendChild(doc.createTextNode("127.0.0.1"));
                RTP_Optionen.appendChild(Empfaenger_IP);
    
                Element Port_Nummer = doc.createElement("Port_Nummer");
                Port_Nummer.appendChild(doc.createTextNode("2405"));
                RTP_Optionen.appendChild(Port_Nummer);
    
                root.appendChild(RTP_Optionen);
    
    
                //Auflistung der Effekt Optionen        
                Effekt = doc.createElement("Effekt");
    
                Element Beginn = doc.createElement("Beginn");
                Beginn.appendChild(doc.createTextNode("0"));
                Effekt.appendChild(Beginn);
    
                Element Dauer = doc.createElement("Dauer");
                Dauer.appendChild(doc.createTextNode("0"));
                Effekt.appendChild(Dauer);
    
                Element Lautstaerke = doc.createElement("Lautstaerke");
                Lautstaerke.appendChild(doc.createTextNode("50"));
                Effekt.appendChild(Lautstaerke);
    
                Element Intensitaet = doc.createElement("Intensitaet");
                Intensitaet.appendChild(doc.createTextNode("50"));
                Effekt.appendChild(Intensitaet);
    
                root.appendChild(Effekt);
    
    
    
                doc.appendChild(root);
    
            }
    
            return doc;
      }
    
    /** Prints the specified node, recursively. */
        public void printDOMTree(Node node ) 
        {
            int type = node.getNodeType();
            switch (type)
            {
            // document element ausgeben
            case Node.DOCUMENT_NODE: 
                {
                    printDOMTree(((Document)node).getDocumentElement() );
                    break;
                }
    
    
           // Element ausgeben mit Attributen
          case Node.ELEMENT_NODE: 
            {
                System.out.print("<");// Anfangstag
                System.out.print(node.getNodeName());
                NamedNodeMap attrs = node.getAttributes();
                for (int i = 0; i < attrs.getLength(); i++)
                {
                    Node attr = attrs.item(i);
                    System.out.print(" " + attr.getNodeName() + "=\"" + attr.getNodeValue() + "\"");
                }
                System.out.print(">");// Endtag
    
    
                NodeList children = node.getChildNodes();
                if (children != null)
                {
                    int len = children.getLength();
                    for (int i = 0; i < len; i++)
                    printDOMTree(children.item(i));
                }
    
    
                break;
            }
    
    
            //  entity reference nodes behandeln
              case Node.ENTITY_REFERENCE_NODE: 
            {
            System.out.print("&");
              System.out.print(node.getNodeName());
              System.out.println(";");
              break;
            }
    
    
            // 'cdata sections' ausgeben
              case Node.CDATA_SECTION_NODE: 
            {
              System.out.print("<![CDATA[');
              System.out.print(node.getNodeValue());
              System.out.println(']]>");
              break;
            }
    
    
            // Text ausgeben
              case Node.TEXT_NODE: 
            {
              System.out.print(node.getNodeValue());
              break;
            }
    
    
            // 'processing instruction' ausgeben
              case Node.PROCESSING_INSTRUCTION_NODE: 
            {
              System.out.println("<?");
              System.out.print(node.getNodeName());
              String data = node.getNodeValue();
              {
                System.out.print(" ");
                System.out.print(data);
              }
              System.out.println("?>");
              break;
            }
        }
    
    
        if (type == Node.ELEMENT_NODE)
        {
          System.out.print("</");
          System.out.print(node.getNodeName());
          System.out.println('>');
        }
      } // DOMTree(Node, PrintWriter)
    }
    Alles anzeigen


    Es rennt auch so gut, erzeugt den richtigen Code, wenn man ihn manuell in eine XML Datei gibt. Ich dachte mir, wenn man es mit nem FileWriter macht, dann spart man sich das kopieren. Deswegen habe ich dann eben wieder den File Writer eingebaut, aber habe das Problem wie oben beim Code von dir, dass er dann nicht alles in die Datei schreibt warum auch immer, obwohl am Code eigentlich nicht wirklich was fundamentales geändert wurde. Habe jetzt den Writer eingebaut, und alle System.out passend umändern lassen, damit er es in die Datei schreibt (die er auch richtig erzeugt, aber eben wie oben bei dir, nur halbert schreibt)

    Java
    // fuer XML und DOM
    import org.w3c.dom.*;
    import javax.xml.parsers.*;
    
    
    //fuer Writer
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    
    public class XmlExporter
    {
        Document doc = null;
        Element RTP_Optionen = null;
        Element Effekt = null;
    
    
        static public void main(String [] args ) throws IOException 
        {
            XmlExporter XD = new XmlExporter();
            XD.doc = XD.neuesDoc();
            XD.printDOMTree(XD.doc);
        }
    
        public Document neuesDoc()
        {
            DocumentBuilderFactory docBFac;
            DocumentBuilder docBuild;
    
            try
            {
                docBFac = DocumentBuilderFactory.newInstance();
                docBuild = docBFac.newDocumentBuilder();
                doc = docBuild.newDocument();
            }
    
            catch( Exception e )
            {
                System.out.println("Dokument konnte nicht erzeugt werden");
            }
    
            if (doc != null)
            {
                Element root = doc.createElement("GUI");
                //Aufbau: root.setAttribute("type", "Das_ist_die_Typart");
    
                //Auflistung der RTP Optionen
                RTP_Optionen = doc.createElement("RTP_Optionen");
    
                Element Empfaenger_IP = doc.createElement("Empfaenger_IP");
                Empfaenger_IP.appendChild(doc.createTextNode("127.0.0.1"));
                RTP_Optionen.appendChild(Empfaenger_IP);
    
                Element Port_Nummer = doc.createElement("Port_Nummer");
                Port_Nummer.appendChild(doc.createTextNode("2405"));
                RTP_Optionen.appendChild(Port_Nummer);
    
                root.appendChild(RTP_Optionen);
    
    
                //Auflistung der Effekt Optionen        
                Effekt = doc.createElement("Effekt");
    
                Element Beginn = doc.createElement("Beginn");
                Beginn.appendChild(doc.createTextNode("0"));
                Effekt.appendChild(Beginn);
    
                Element Dauer = doc.createElement("Dauer");
                Dauer.appendChild(doc.createTextNode("0"));
                Effekt.appendChild(Dauer);
    
                Element Lautstaerke = doc.createElement("Lautstaerke");
                Lautstaerke.appendChild(doc.createTextNode("50"));
                Effekt.appendChild(Lautstaerke);
    
                Element Intensitaet = doc.createElement("Intensitaet");
                Intensitaet.appendChild(doc.createTextNode("50"));
                Effekt.appendChild(Intensitaet);
    
                root.appendChild(Effekt);
    
                doc.appendChild(root);
            }
            return doc;
      }
    
        // git die Knoten rekursiv aus
        public void printDOMTree(Node node ) throws IOException 
        {
            //File Writer
            File datei = new File("ausgabe.xml");
            FileWriter ausgabeStrom = new FileWriter(datei);
    
            PrintWriter ausgabe = new PrintWriter(ausgabeStrom); // scheibt alles nach System.out
    
            int type = node.getNodeType();
            switch (type)
            {
                // document element ausgeben
                case Node.DOCUMENT_NODE: 
                {
                    printDOMTree(((Document)node).getDocumentElement() );
                    break;
                }
    
    
           // Element ausgeben mit Attributen
            case Node.ELEMENT_NODE: 
            {
                ausgabe.print("<");// Anfangstag
                ausgabe.print(node.getNodeName());
                NamedNodeMap attrs = node.getAttributes();
                for (int i = 0; i < attrs.getLength(); i++)
                {
                    Node attr = attrs.item(i);
                    ausgabe.print(" " + attr.getNodeName() + "=\"" + attr.getNodeValue() + "\"");
                }
                ausgabe.print(">");// Endtag
    
    
                NodeList children = node.getChildNodes();
                if (children != null)
                {
                    int len = children.getLength();
                    for (int i = 0; i < len; i++)
                    printDOMTree(children.item(i));
                }
    
    
                break;
            }
    
    
            //  entity reference nodes behandeln
              case Node.ENTITY_REFERENCE_NODE: 
            {
            ausgabe.print("&");
              ausgabe.print(node.getNodeName());
              ausgabe.println(";");
              break;
            }
    
    
            // 'cdata sections' ausgeben
              case Node.CDATA_SECTION_NODE: 
            {
              ausgabe.print("<![CDATA[');
              ausgabe.print(node.getNodeValue());
              ausgabe.println(']]>");
              break;
            }
    
    
            // Text ausgeben
              case Node.TEXT_NODE: 
            {
              ausgabe.print(node.getNodeValue());
              break;
            }
    
    
            // 'processing instruction' ausgeben
              case Node.PROCESSING_INSTRUCTION_NODE: 
            {
              ausgabe.println("<?");
              ausgabe.print(node.getNodeName());
              String data = node.getNodeValue();
              {
                ausgabe.print(" ");
                ausgabe.print(data);
              }
              ausgabe.println("?>");
              break;
            }
        }
    
    
        if (type == Node.ELEMENT_NODE)
        {
          ausgabe.print("</");
          ausgabe.print(node.getNodeName());
          ausgabe.println('>');
        }
        ausgabe.close(); // oder ausgabe.flush um Stream offen zu lassen
      } // DOMTree(Node, PrintWriter)
    }
    Alles anzeigen

    HU: PISWIBibliothekHUStudentPointStatus Neuer Studienplan SammelzeugnisZID
    TU:
    TUWISBibliothekTULehrmittelzentrum TUWEL Neuer Studienplan Unifreie TageZID AbschlussarbeitenPublikationsdatenbank
    Studium: Informatik-Forum REBIRTHMitschriften1 Mitschriften2 Vorlesungs WikiForenkalender
    Allgemein: Apple on CampusUSIUniWikipedia WegfinderUni WegfinderÖffis (VOR)OpenBookMeine WebseiteBücherbörse
    Fehlende/nicht funktionierende
    Links bitte melden :)

  • Lord Binary
    18
    Lord Binary
    Mitglied
    Reaktionen
    11
    Punkte
    3.301
    Beiträge
    647
    • 25. Dezember 2006 um 11:20
    • #4

    Ser's ..

    Ist klar, daß das nicht funktionieren kann.
    Du erzeugst bei jedem rekursiven Aufruf von printDOMTree das Outputfile neu, damit kommt nur die letzte Rekursionsstufe ins File und nicht der gesamte Baum.

    Besser:

    Code
    public void printDOMTree(Node node ) throws IOException
    	   {
    		   //File Writer
    	        File datei = new File("ausgabe.xml");
    	        FileWriter ausgabeStrom = new FileWriter(datei);
    
    	        PrintWriter ausgabe = new PrintWriter(ausgabeStrom); // scheibt alles nach System.out
    	        _printDOMTree(node, ausgabe );
    	        ausgabe.close(); // oder ausgabe.flush um Stream offen zu lassen
    
    	   }
    
    	    // git die Knoten rekursiv aus
    	    private void _printDOMTree(Node node, PrintWriter ausgabe ) throws IOException 
    	    {
    
    
    	        int type = node.getNodeType();
    	        switch (type)
    	        {
    	            // document element ausgeben
    	            case Node.DOCUMENT_NODE: 
    	            {
    	                _printDOMTree(((Document)node).getDocumentElement(), ausgabe );
    	                break;
    	            }
    
    
    	       // Element ausgeben mit Attributen
    	        case Node.ELEMENT_NODE: 
    	        {
    	            ausgabe.print("<");// Anfangstag
    	            ausgabe.print(node.getNodeName());
    	            NamedNodeMap attrs = node.getAttributes();
    	            for (int i = 0; i < attrs.getLength(); i++)
    	            {
    	                Node attr = attrs.item(i);
    	                ausgabe.print(" " + attr.getNodeName() + "=\"" + attr.getNodeValue() + "\"");
    	            }
    	            ausgabe.print(">");// Endtag
    
    
    	            NodeList children = node.getChildNodes();
    	            if (children != null)
    	            {
    	                int len = children.getLength();
    	                for (int i = 0; i < len; i++)
    	                _printDOMTree(children.item(i), ausgabe);
    	            }
    
    
    	            break;
    	        }
    
    
    	        //  entity reference nodes behandeln
    	          case Node.ENTITY_REFERENCE_NODE: 
    	        {
    	        ausgabe.print("&");
    	          ausgabe.print(node.getNodeName());
    	          ausgabe.println(";");
    	          break;
    	        }
    
    
    	        // 'cdata sections' ausgeben
    	          case Node.CDATA_SECTION_NODE: 
    	        {
    	          ausgabe.print("<![CDATA[');
    	          ausgabe.print(node.getNodeValue());
    	          ausgabe.println(']]>");
    	          break;
    	        }
    
    
    	        // Text ausgeben
    	          case Node.TEXT_NODE: 
    	        {
    	          ausgabe.print(node.getNodeValue());
    	          break;
    	        }
    
    
    	        // 'processing instruction' ausgeben
    	          case Node.PROCESSING_INSTRUCTION_NODE: 
    	        {
    	          ausgabe.println("<?");
    	          ausgabe.print(node.getNodeName());
    	          String data = node.getNodeValue();
    	          {
    	            ausgabe.print(" ");
    	            ausgabe.print(data);
    	          }
    	          ausgabe.println("?>");
    	          break;
    	        }
    	    }
    
    
    	    if (type == Node.ELEMENT_NODE)
    	    {
    	      ausgabe.print("</");
    	      ausgabe.print(node.getNodeName());
    	      ausgabe.println('>');
    	    }
    
    	  } // DOMTree(Node, PrintWriter)
    Alles anzeigen


    Trading for a living [equities,futures,forex]

  • mtintel
    37
    mtintel
    Mitglied
    Reaktionen
    19
    Punkte
    14.759
    Beiträge
    2.654
    • 25. Dezember 2006 um 12:18
    • #5
    Zitat von Lord Binary

    Ser's ..

    Ist klar, daß das nicht funktionieren kann.
    Du erzeugst bei jedem rekursiven Aufruf von printDOMTree das Outputfile neu, damit kommt nur die letzte Rekursionsstufe ins File und nicht der gesamte Baum.

    VIELEN VIELEN DANK :thumb: Funktioniert jetzt echt super :applaus::bounce:

    HU: PISWIBibliothekHUStudentPointStatus Neuer Studienplan SammelzeugnisZID
    TU:
    TUWISBibliothekTULehrmittelzentrum TUWEL Neuer Studienplan Unifreie TageZID AbschlussarbeitenPublikationsdatenbank
    Studium: Informatik-Forum REBIRTHMitschriften1 Mitschriften2 Vorlesungs WikiForenkalender
    Allgemein: Apple on CampusUSIUniWikipedia WegfinderUni WegfinderÖffis (VOR)OpenBookMeine WebseiteBücherbörse
    Fehlende/nicht funktionierende
    Links bitte melden :)

  • mtintel
    37
    mtintel
    Mitglied
    Reaktionen
    19
    Punkte
    14.759
    Beiträge
    2.654
    • 3. Januar 2007 um 10:20
    • #6

    Ich habe die Datei noch ein wenig umgeändert, und wollte jetzt es so machen, da der XML Exporter ja eigentlich an ein Hauptprogramm "gehängt" wird, um von dort die geschickten Daten zu exportieren in einer XML Datei das machen.

    Das Problem ist, dass ich seit Tagen dran sitze, und egal wie ich es mache, es einfach net will, und die die ich kenne und sich mit Java auskennen, auch net weiter wussten.

    Also die Grundidee ist einfach, dass man den Exporter mit Argumenten aufruft, und eben die Argumente die Werte sind, die im XML exportiert und gesichert werden sollen. Das Problem ist aber, dass er in neuesDoc die Argumente ja nicht mehr "kennt" und man deswegen aus der Main sie hinbekommen muss. Ich dachte mir, dass macht man einfach, in dem man von neuesDoc einfach den Methodenkopf ändert, dort eben die ganzen Argumente dann übergibt, die dann eben in neuesDoc weiter verwendet werden.

    Ansich funktioniert das super, nur das Problem ist, dass er so nur "fixe" Variablen annimmt, also Variable (in dem Fall Strings) die ich im Code mit "1" angebe, aber wenn ich z.b. einer Variable den String 1 zuweiße, und dann eben mit der Variable weiter arbeite, geht das nicht.

    Genauso kann ich warum auch immer die Argumente nicht einlesen, da er dann immer einen Fehler hat. Somit kann ich leider auch nicht, warum auch immer, da ich eben die Argumente nicht einlesen kann, aus dem Hauptprogramm mithilfe von Argumenten die Strings die mit dem XML Exporter gespeichert werden sollen weiterarbeiten...

    Deswegen würde ich gerne wissen, warum ich nicht mit String IP = args [0]; das Argument einlesen kann, und warum ich nicht bei XD.doc = XD.neuesDoc("1", "2", "3", "4" ,"5", "6" ) auch Variable verwenden kann bzw wie ich das Problem sonst noch lösen könnte...

    Java
    // fuer XML und DOM
    import org.w3c.dom.*;
    import javax.xml.parsers.*;
    
    
    //fuer Writer
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    
    public class XmlExporter
    {
        Document doc = null;
        Element RTP_Optionen = null;
        Element Effekt = null;
    
    
        public static void main(String[] args) throws IOException 
        {
            // String IP = args [0];  hier will ich die Argumente einlesen damit ich dann 2 Zeilen darunter sie "weitergeben" kann an neuesDoc
            XmlExporter XD = new XmlExporter();
            XD.doc = XD.neuesDoc("1", "2", "3", "4" ,"5", "6" ); // hier will ich z.b. das Argument das in IP gespeichert ist an neuesDoc geben zur Weiterverarbeitung
            XD.printDOMTree(XD.doc);
        }
    
        public Document neuesDoc(String IP, String Port, String Beg, String Dau, String Laut, String Inten)
        {
            DocumentBuilderFactory docBFac;
            DocumentBuilder docBuild;
    
            try
            {
                docBFac = DocumentBuilderFactory.newInstance();
                docBuild = docBFac.newDocumentBuilder();
                doc = docBuild.newDocument();
            }
    
            catch( Exception e )
            {
                System.out.println("Dokument konnte nicht erzeugt werden");
            }
    
            if (doc != null)
            {
    
                Element root = doc.createElement("GUI");
                //Aufbau: root.setAttribute("type", "Das_ist_die_Typart");
    
                //Auflistung der RTP Optionen
                RTP_Optionen = doc.createElement("RTP_Optionen");
    
                Element Empfaenger_IP = doc.createElement("Empfaenger_IP");
                //Empfaenger_IP.appendChild(doc.createTextNode("123123"));
                Empfaenger_IP.appendChild(doc.createTextNode(IP));
                RTP_Optionen.appendChild(Empfaenger_IP);
    
                Element Port_Nummer = doc.createElement("Port_Nummer");
                //Port_Nummer.appendChild(doc.createTextNode("12324"));
                Port_Nummer.appendChild(doc.createTextNode(Port));
                RTP_Optionen.appendChild(Port_Nummer);
    
                root.appendChild(RTP_Optionen);
    
    
                //Auflistung der Effekt Optionen        
                Effekt = doc.createElement("Effekt");
    
                Element Beginn = doc.createElement("Beginn");
                //Beginn.appendChild(doc.createTextNode("45"));
                Beginn.appendChild(doc.createTextNode(Beg));
                Effekt.appendChild(Beginn);
    
                Element Dauer = doc.createElement("Dauer");
                //Dauer.appendChild(doc.createTextNode("23"));
                Dauer.appendChild(doc.createTextNode(Dau));
                Effekt.appendChild(Dauer);
    
                Element Lautstaerke = doc.createElement("Lautstaerke");
                //Lautstaerke.appendChild(doc.createTextNode("63"));
                Lautstaerke.appendChild(doc.createTextNode(Laut));
                Effekt.appendChild(Lautstaerke);
    
                Element Intensitaet = doc.createElement("Intensitaet");
    //            Intensitaet.appendChild(doc.createTextNode("12"));
                Intensitaet.appendChild(doc.createTextNode(Inten));
                Effekt.appendChild(Intensitaet);
    
                root.appendChild(Effekt);
    
                doc.appendChild(root);
            }
            return doc;
      }
    
        // git die Knoten rekursiv aus
           public void printDOMTree(Node node ) throws IOException
           {
               //File Writer
                File datei = new File("ausgabe.xml");
                FileWriter ausgabeStrom = new FileWriter(datei);
    
                PrintWriter ausgabe = new PrintWriter(ausgabeStrom); // scheibt alles nach System.out
                _printDOMTree(node, ausgabe );
                ausgabe.close(); // oder ausgabe.flush um Stream offen zu lassen
    
           }
    
            // git die Knoten rekursiv aus
            private void _printDOMTree(Node node, PrintWriter ausgabe ) throws IOException 
            {
    
    
                int type = node.getNodeType();
                switch (type)
                {
                    // document element ausgeben
                    case Node.DOCUMENT_NODE: 
                    {
                        _printDOMTree(((Document)node).getDocumentElement(), ausgabe );
                        break;
                    }
    
    
               // Element ausgeben mit Attributen
                case Node.ELEMENT_NODE: 
                {
                    ausgabe.print("<");// Anfangstag
                    ausgabe.print(node.getNodeName());
                    NamedNodeMap attrs = node.getAttributes();
                    for (int i = 0; i < attrs.getLength(); i++)
                    {
                        Node attr = attrs.item(i);
                        ausgabe.print(" " + attr.getNodeName() + "=\"" + attr.getNodeValue() + "\"");
                    }
                    ausgabe.print(">");// Endtag
    
    
                    NodeList children = node.getChildNodes();
                    if (children != null)
                    {
                        int len = children.getLength();
                        for (int i = 0; i < len; i++)
                        _printDOMTree(children.item(i), ausgabe);
                    }
    
    
                    break;
                }
    
    
                //  entity reference nodes behandeln
                  case Node.ENTITY_REFERENCE_NODE: 
                {
                ausgabe.print("&");
                  ausgabe.print(node.getNodeName());
                  ausgabe.println(";");
                  break;
                }
    
    
                // 'cdata sections' ausgeben
                  case Node.CDATA_SECTION_NODE: 
                {
                  ausgabe.print("<![CDATA[');
                  ausgabe.print(node.getNodeValue());
                  ausgabe.println(']]>");
                  break;
                }
    
    
                // Text ausgeben
                  case Node.TEXT_NODE: 
                {
                  ausgabe.print(node.getNodeValue());
                  break;
                }
    
    
                // 'processing instruction' ausgeben
                  case Node.PROCESSING_INSTRUCTION_NODE: 
                {
                  ausgabe.println("<?");
                  ausgabe.print(node.getNodeName());
                  String data = node.getNodeValue();
                  {
                    ausgabe.print(" ");
                    ausgabe.print(data);
                  }
                  ausgabe.println("?>");
                  break;
                }
            }
    
    
            if (type == Node.ELEMENT_NODE)
            {
              ausgabe.print("</");
              ausgabe.print(node.getNodeName());
              ausgabe.println('>');
            }
    
          } // DOMTree(Node, PrintWriter)
    }
    Alles anzeigen

    HU: PISWIBibliothekHUStudentPointStatus Neuer Studienplan SammelzeugnisZID
    TU:
    TUWISBibliothekTULehrmittelzentrum TUWEL Neuer Studienplan Unifreie TageZID AbschlussarbeitenPublikationsdatenbank
    Studium: Informatik-Forum REBIRTHMitschriften1 Mitschriften2 Vorlesungs WikiForenkalender
    Allgemein: Apple on CampusUSIUniWikipedia WegfinderUni WegfinderÖffis (VOR)OpenBookMeine WebseiteBücherbörse
    Fehlende/nicht funktionierende
    Links bitte melden :)

  • Lord Binary
    18
    Lord Binary
    Mitglied
    Reaktionen
    11
    Punkte
    3.301
    Beiträge
    647
    • 3. Januar 2007 um 12:48
    • #7
    Zitat


    und die die ich kenne und sich mit Java auskennen, auch net weiter wussten.

    Widerspruch !
    Entweder oder :winking_face:

    Verstehe das Problem nicht wirklich ...

    Zitat


    Genauso kann ich warum auch immer die Argumente nicht einlesen, da er dann immer einen Fehler hat

    Warum nicht ?
    Welcher Fehler ?

    Dieser Code hier geht problemlos:

    Code
    public static void main(String[] args) throws IOException 
        {
            String IP="1",Port="2",Beg="3",Dau="4",Laut="5",Inten="6";   
            if (args.length==6)
            {
               IP    = args[0];
               Port  = args[1];
               Beg   = args[2];
               Dau   = args[3];
               Laut  = args[4];
               Inten = args[5];
            }
            else System.out.println("Achtung, keine Parameter angegeben, benutze Defaultwerte\nUsage: blablabla");
    
            XmlExporter XD = new XmlExporter();
            XD.doc = XD.neuesDoc(IP, Port, Beg, Dau ,Laut, Inten );
            XD.printDOMTree(XD.doc);
        }
    Alles anzeigen

    Aber wiegesagt, ich bin mir nicht sicher was nicht funktioniert und wie es funktionieren sollte ...

    mfg, lb


    Trading for a living [equities,futures,forex]

  • mtintel
    37
    mtintel
    Mitglied
    Reaktionen
    19
    Punkte
    14.759
    Beiträge
    2.654
    • 3. Januar 2007 um 13:01
    • #8

    Ja so geht es jetzt! Vielen Dank! Habe es ohne Schleife gemacht, und dann wollte er eben die args nicht nehmen. Wobei mir jetzt erst einfiel, man könnte das noch eleganter machen, mit nem Konstruktor, der dann alles aufruft, und man somit main und die args nicht braucht... glaube werde es so machen... aber vielen dank für die Hilfe, beim nächsten mal weiß ich dann das es so geht!

    HU: PISWIBibliothekHUStudentPointStatus Neuer Studienplan SammelzeugnisZID
    TU:
    TUWISBibliothekTULehrmittelzentrum TUWEL Neuer Studienplan Unifreie TageZID AbschlussarbeitenPublikationsdatenbank
    Studium: Informatik-Forum REBIRTHMitschriften1 Mitschriften2 Vorlesungs WikiForenkalender
    Allgemein: Apple on CampusUSIUniWikipedia WegfinderUni WegfinderÖffis (VOR)OpenBookMeine WebseiteBücherbörse
    Fehlende/nicht funktionierende
    Links bitte melden :)

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern