neue XML-Datei erstellen mit vorhandener Struktur

Status
Nicht offen für weitere Antworten.
N

NO_Kind

Gast
Hallo zusammen!


Ich will mit DOM ein neues XML-Dokument erstellen. jetzt will ich mir aber nicht die Arbeit machen jedes Element(Tags) selbst zu schreiben.

ich hab ein bestehendes XML-Dokument. Jetzt will ich einfach die Struktur davon verwenden, jedoch soll der Inhalt nicht mit übernommen werden.

Gibt es eine Möglichkeit dies umzusetzen oder muss ich von Hand das XML-File generieren???


danke euch!
 

mikachu

Top Contributor
mit "inhalt" meinst du die CDATA sektions und/oder die attribute?

also nur die elementnamen als neue tags in das neue xml reinschreiben ?!?

Code:
<foo attr="foobar">
    text text
    text text
    <bar anotherattribute="gazong" />
</foo>
wird zu
Code:
<foo>
    <bar />
</foo>
oder ?!?
 
G

Gast

Gast
nein muss nicht sein. kann ganz normal mit den packages :

import javax.xml.*;
import org.w3c.*;

erfolgen.
 
G

Gast

Gast
Kann mir das hier weiterhelfen?

Code:
NodeList mainList = newDoc.getElementsByTagName("*");
???
 
G

Gast

Gast
Code:
        for ( int i = 0; i < mainList.item(0).getChildNodes().getLength(); i++ )
        {
           Node node = mainList.item(0).getChildNodes().item(i);
           newDoc.adoptNode(node);
           
        }

und danach das hier.
 

mikachu

Top Contributor
wie sieht dein bestehendes xml dokument aus? ist das ne datei, nen stream oder sonst was? oder ist das auch schon nen jdom?
 

mikachu

Top Contributor
so, ich hab hier mal was gebastelt :D
Code:
import java.io.IOException;
import java.io.OutputStream;

import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;

public class XMLHandler extends DefaultHandler
{
   private OutputStream _writeTo;
   private final String INDENT = "\t";
   private int _indentAmount = -1;
   private String _encoding;

   public XMLHandler( final OutputStream os, String enc )
   {
      _writeTo = os;
      _encoding = enc;
   }

   public XMLHandler( final OutputStream os )
   {
      this( os, "UTF-8" );
   }

   @Override
   public void startElement( String uri, String localName, String qName, Attributes atts )
   {
      _indentAmount++;
      try
      {
         for( int i = 0; i < _indentAmount; ++i )
               _writeTo.write( INDENT.getBytes() );
         _writeTo.write( '<' );
         _writeTo.write( qName.getBytes() );
         _writeTo.write( '>' );
         _writeTo.write( '\n' );
      }
      catch( IOException e )
      {
         e.printStackTrace();
      }
   }

   @Override
   public void endElement( String uri, String localName, String qName )
   {
      try
      {
         for( int i = 0; i < _indentAmount; ++i )
               _writeTo.write( INDENT.getBytes() );
         _writeTo.write( '<' );
         _writeTo.write( '/' );
         _writeTo.write( qName.getBytes() );
         _writeTo.write( '>' );
         _writeTo.write( '\n' );
      }
      catch( IOException e )
      {
         e.printStackTrace();
      }
      _indentAmount--;
   }

    @Override
    public void startDocument()
    {
       try
      {
         _writeTo.write( ( "<?xml version=\"1.0\" encoding=\"" + _encoding + "\"?>" ).getBytes() );
      }
      catch( IOException e )
      {
         e.printStackTrace();
      }
    }
}

aufruf mittels:
Code:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.SAXException;

public class Slimmer
{
   public static void slim( InputStream fatXML, final OutputStream slimXML )
   {
      try
      {
         SAXParser parser = SAXParserFactory.newInstance().newSAXParser();

         parser.parse( fatXML, new XMLHandler( slimXML ) );
      }
      catch( ParserConfigurationException e )
      {
         e.printStackTrace();
      }
      catch( SAXException e )
      {
         e.printStackTrace();
      }
      catch( IOException e )
      {
         e.printStackTrace();
      }
   }

   public static void main( String[] args ) throws FileNotFoundException
   {
      FileOutputStream fos = new FileOutputStream( new File( "output.xml" ) ); // hier kannst du irgendeinen anderen stream nehmen
      InputStream in = new FileInputStream( new File( "test.xml" ) ); // test.xml ist deine xml-datei

      Slimmer.slim( in, fos );
   }
}

have phun
 

mikachu

Top Contributor
ehrlich gesagt weiß ich jetzt im moment auch nicht im geringsten, wie das mit jdom zu bewerkstelligen ist... ich hab hier auf arbeit nur mit streams zu tun und mit größeren xml's ;)
 
G

Gast

Gast
Hey Mika,

vielen vielen dank für den Source! Genau das hab ich gesucht.



Sach mal bist am arbeiten oder daheim :)

wenn auf Arbeit, dann respekt das du sie so einteilen kannst, das du nebenbei Zeit für unsere Problem hast.
 
G

Gast

Gast
Ich hab auch erstmal mit größeren XML-Dateien zu tun

größe = > 10 mb


aber diese müssen dan runtergebrochen werden :)
 

mikachu

Top Contributor
auf arbeit... aber hab meine tasks schon erledigt und mit chef geredet, der aber erst am nächsten montag zeit hat...
und man lernt, indem man programmiert, oder ;) :cool:

das einzige manko, was es noch zu beseitigen gibt, ist, wenn du folgende struktur hast

<foo att="bar" />

dass da ein

<foo>
</foo>


draus gemacht wird... aber da kannste dir ja allein noch en paar gedanken machen ;)
 
G

Gast

Gast
In dieser XML-Datei nutzen wir keine Attribute....


Ich werd erstmal deine Lösung übernehmen. Schau aber noch ob man es doch nciht mit Dom-lösen kann.

find es nämlich immer blöd, erstmal dom zu verwenden, dann doch auf stream etc zu setzen. und am ende brauch ich doch wieder dom :), ist halt bissel blöd.
 

mikachu

Top Contributor
ok, wenn es aber die möglichkeit gibt, jdom als stream bereitzustellen... ;) ...was es bestimmt nicht gibt

aber wenn ihr ausschließlich DOM nutzt... dann macht das keinen sinn, dass iss wahr

es soll ja auch nur ne alternative lösung sein... wie in den FAQ steht... "wir machen keine hausaufgaben" :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Neue Inhalte in XML-Datei einfügen XML & JSON 0
Z XML auslesen, Elemente daraus entfernen und als neue XML zurückgeben XML & JSON 2
M neue Knoten erstellen ? XML & JSON 6
D Kann man neue Knoten löschen? XML & JSON 4
T [JDOM] XML File, neue Daten hinzufügen XML & JSON 5
T Tags in XML Datei mit Java erstellen XML & JSON 3
S XML Datei speichern nicht möglich XML & JSON 13
M Objekt zu jsonArray in .json datei hinzufügen ? XML & JSON 3
J Object in JSON Datei einlesen und als neues Object erzeugen (in ein Object Array) XML & JSON 29
I Mit Hibernate eine XML-Datei in eine Tabellenspalte einlesen. XML & JSON 1
MiMa Buch Metadaten aus XML Datei parsen XML & JSON 48
J Auslesen der Länge einer XML-Datei in Android Studio XML & JSON 8
R xlsx-Datei mit Apache POI einlesen XML & JSON 18
S Validierung einer XML-Datei - Führende Leerzeichen und Tabs XML & JSON 10
S CSV Datei einlesen und XML Ausgeben XML & JSON 2
U jar Datei mit ant erstellen XML & JSON 1
P wie kriege ich eine *.dtd Datei mit in die ausführbare *.jar? XML & JSON 2
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
D XML-Datei per Button erstellen XML & JSON 3
K JAR-File mit XML-Datei XML & JSON 1
M Text eines Elements in XML Datei mit JAVA bearbeiten und kompletten Element-Zweig hinzufügen XML & JSON 16
I Liste in YAML Datei speichern und wieder auslesen XML & JSON 1
A Leeres Array beim Auslesen von XML-Datei XML & JSON 4
E JTreedaten in eine XML Datei speichern XML & JSON 3
D Int-Werte in XML-Datei schreiben (DOM) XML & JSON 2
B xsd-Datei ins jar file XML & JSON 5
T Formulardaten in XML Datei speichern XML & JSON 5
H Wsdl datei XML & JSON 2
D Große XML-Datei in einzel Dateien splitten XML & JSON 3
S JDOM XML Datei darstellen Fehler! XML & JSON 2
S Xml File für den Aufbau einer anderen Xml Datei XML & JSON 6
M XML-Datei mit JAXB und 2 Namespaces XML & JSON 0
J XML - Datei wird nicht ganz angezeigt XML & JSON 2
P (Eclipse)Ant Script, .jar Datei erstellen mit MANIFEST.MF XML & JSON 12
Z XML Datei mit JDOM einlesen und verarbeiten XML & JSON 6
K Beim Parsen einer XML-Datei Connection timed out XML & JSON 4
E ResultSet als XML Datei speichern XML & JSON 7
M XStream, CSV Datei XML & JSON 9
A Frage zu bestehender XML Datei XML & JSON 6
A Simple Constructor Injection Datei-Pfad XML & JSON 6
K Einlesen eines Parameters aus HTML-Datei XML & JSON 4
Maxim6394 Lesen/Schreiben von XML Datei XML & JSON 9
A XML datei lesbar speichern (eingerückt) XML & JSON 7
M XML Datei Parsen XML & JSON 4
Airwolf89 HTML Datei mit SAXBuilder laden hängt sich auf XML & JSON 4
N Java Code aus XML Datei generieren XML & JSON 8
D Aus lesen einer XML-Datei ( 1 root, 3 childs) XML & JSON 7
D Wie XML Datei einlesen und HTML entities übernehmen? XML & JSON 3
R XLM Datei lesen Ändern (kompliziertes Search and Replace) und Speichern XML & JSON 12
K Kurze XML Datei Parsen XML & JSON 5
S XSD-Datei zulässige Werte auslesen XML & JSON 3
M XML Datei heapspace erreicht XML & JSON 3
M Große Datei auslesen/in dieser suchen XML & JSON 2
S Konforme XML Datei über XSD erstellen XML & JSON 2
M RSS-Datei auslesen von Yahoo Webservice XML & JSON 4
T Inhalt einer .xml Datei auf Javaoberfläche wiedergeben XML & JSON 4
M XML Datei drucken XML & JSON 8
T Daten aus Programm in XML Datei speichern XML & JSON 2
D XSD Datei erstellen XML & JSON 4
L [SAX] Geschachtelte XML Datei parsen XML & JSON 3
E XML Datei mit DOM auslesen (Text mit Attributen) XML & JSON 2
G txt. Datei in xml datei konvertieren XML & JSON 21
K XML Datei in ein Java package „einbinden" XML & JSON 3
L Reihenfolge beim xml Datei parsen einhalten? XML & JSON 8
L xml Datei parsen ohne End-Tag XML & JSON 6
C if-Abfrage mit Datei Variable aus XML-Datei XML & JSON 2
sylo Beim Erzeugen einer XML Datei auch die XML Struktur erzeugen? XML & JSON 11
sylo DOM Document in XML Datei schreiben XML & JSON 5
F XML Datei in Java einlesen XML & JSON 4
J Objektstruktur aus XML-Datei erzeugen XML & JSON 21
D ID's aus XML Datei rauslesen und in Java ausgeben XML & JSON 7
E XML Datei einlesen und Elemente in der Console ausgeben XML & JSON 6
N value Wert einer XML Datei mit JAVA bearbeiten XML & JSON 21
ARadauer Aus XML Datei Objekte erstellen... XML & JSON 3
N MalformedByteSequenceException bei Lesen aus XML Datei XML & JSON 2
H xml-Datei mit Attributen einlesen XML & JSON 3
A XML-Datei: Ab wann kritische Größe erreicht? XML & JSON 4
multiholle XML Datei elegant verarbeiten XML & JSON 14
M XMI-Datei auslesen XML & JSON 4
T Ließt keine XML Datei XML & JSON 2
R JAXB: Aus einem Vector oder List XML Datei erstellen XML & JSON 1
J XML-Datei ein Array einlesen XML & JSON 10
M xml - datei erstellen XML & JSON 2
T Wie einen String(XML Inhalt) in eine XML Datei speichern? XML & JSON 8
P Große XML Datei mittels JDOM bearbeiten / einlesen XML & JSON 6
H XML-Datei in einzelne XML-Dateien zerlegen XML & JSON 2
G Tags oder Zeilen der Not-Validen XML-Datei XML & JSON 7
C Suche in XML-Datei XML & JSON 6
D Zeilennummer in der XML - Datei XML & JSON 5
S Einlesen einer xml Datei XML & JSON 4
M Datei parsen XML & JSON 5
S PDF Erzeugung - Probleme mit der XML Datei bei Schema-Infos XML & JSON 2
S XML Datei einlesen, aber root überspringen XML & JSON 2
T Werte in XML Datei an entsprechender Stelle einfügen XML & JSON 3
Saxony unbekannte XML Datei parsen und ausgeben XML & JSON 10
L XML Datei in Java angeben Pfad? XML & JSON 3
A Mehrere Anwender sollen auf eine XML-Datei zugreifen XML & JSON 4
A SVG Datei auslesen und Batik XML & JSON 1
D XML Datei innerhalb einer JAR Datei parsen XML & JSON 2
M brauche große XML-Datei für XPath-Tests XML & JSON 4

Ähnliche Java Themen

Neue Themen


Oben