Kein schließendes Tag bei leerem Element mit JDOM

Status
Nicht offen für weitere Antworten.

K-Man

Bekanntes Mitglied
Hallo
Bei des Suche hab ich nichts gefunden, deswegen die Frage.
Wenn ich XML-Dateien mit JDom erzeuge und es wird kein Textelement übergeben, dann mach JDom nur ein Tag <Test \>
Andere Programme, die dieses XML verwenden, kommen aber damit nicht zurecht sondern erwarten ein <Test></Test>

Wie kann ich erreichen, dass JDOM die 2.Variante erzeugt? Geht das mit JDOM überhaupt oder muss ich mir da einen Workaround überlegen?

Vielen Dank
Stefan
 

Evil-Devil

Top Contributor
Was macht JDOM denn, wenn du ihm ein leeres Textelement übergibst? Ansonsten mal in der JDOM Doku nachschauen, theoretisch dürfte es dafür eine Funktion geben. Sonst hilft wohl nur der Workaround.
 

K-Man

Bekanntes Mitglied
JDOM mach bei einem leeren Textelement statt <Test></Test> einfach nur <Test/>
Und mit diesem <Test/> kommen viele andere Programme nicht zurecht...
 

byte

Top Contributor
K-Man hat gesagt.:
Wenn ich XML-Dateien mit JDom erzeuge und es wird kein Textelement übergeben, dann mach JDom nur ein Tag <Test \>
Andere Programme, die dieses XML verwenden, kommen aber damit nicht zurecht sondern erwarten ein <Test></Test>
Zunächst mal: <Test \> ist XML-Standard. Wenn ein Tool das also nicht kennt, dann kann es offenbar kein XML.

Wie kann ich erreichen, dass JDOM die 2.Variante erzeugt? Geht das mit JDOM überhaupt oder muss ich mir da einen Workaround überlegen?
Das geht problemlos, indem Du Dir ein geeignetes Format erzeugst:
http://www.jdom.org/docs/apidocs/org/jdom/output/Format.html#setExpandEmptyElements(boolean)
 

K-Man

Bekanntes Mitglied
Erstmal vielen Dank. Ich habe jetzt folgendes gemacht:
Code:
FileOutputStream fos = new FileOutputStream(file);
XMLOutputter outputter = new XMLOutputter();
Format format = Format.getPrettyFormat();
format.setExpandEmptyElements(true);
outputter.setFormat(format);
outputter.output(doc, fos);
Mit diesem Code übergebe ich dem Outputter das Document mit der XML-Struktur samt dem Tag mit dem leeren Textelement. Leider hat sich da auch nichts geändert und es steht immer noch <Test/> da... ???:L
 

Murray

Top Contributor
Bist du sicher, dass es so nicht funktioniert? Ich habe zwar schon länger nichts mehr mit JDOM gemacht, bin mir aber ziemlich sicher, diese Formatierung so ähnlich schon benutzt zu haben. Sind in der Ausgabedatei denn die Einrückungen vorhanden, die durch dieses Format erzwungen werden?
 

K-Man

Bekanntes Mitglied
Es wird eine ganz normale XML-Datei erzeugt, die auch mit entsprechenden Programmen als solches bearbeitet werden kann. Nur eben dieses eine Tag bleibt weiterhin bei <Test/> :?
 

Murray

Top Contributor
Folgender Code
Code:
public class JDOMTest {

	public static void main(String[] args) throws Exception {
		
		Document doc = new Document();
		Element root = new Element( "root");
		doc.addContent( root);
		Element t1 = new Element( "test1");
		root.addContent( t1);
		Element t2 = new Element( "test2");
		root.addContent( t2);
		Element t3 = new Element( "test3");
		t2.addContent( t3);
		
		XMLOutputter outputter = new XMLOutputter();
		System.out.println( "ohne Formatierung:");
		outputter.output(doc, System.out);

		System.out.println();
		
		Format format = Format.getPrettyFormat();
		format.setExpandEmptyElements(true);
		outputter.setFormat(format);
		System.out.println( "formatiert:");
		outputter.output(doc, System.out);

	}

}

liefert bei mir die Ausgabe

Code:
ohne Formatierung:
<?xml version="1.0" encoding="UTF-8"?>
<root><test1 /><test2><test3 /></test2></root>

formatiert:
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <test1></test1>
  <test2>
    <test3></test3>
  </test2>
</root>

Es sieht also so aus, als würde das grundsätzlich schon funktionieren.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna SonarLint: Warum kein Null-Referencing-CodeSmell-Hint hier? Allgemeine Java-Themen 23
M Kein Scanner Fehler durch falsche EIngabe Allgemeine Java-Themen 4
I OpenPDF (ehem. iText) will kein PDF mit CMYK only erzeugen Allgemeine Java-Themen 6
A Kein Online-Zugang mögl.! Allgemeine Java-Themen 4
D kein Versand von Mails mit Anhang mehr Allgemeine Java-Themen 2
D Best Practice Gesamten Bildschirminhalt auslesen und Email schicken sobald kein Pixel sich ändert Allgemeine Java-Themen 11
R Warum kein throw? Allgemeine Java-Themen 3
W String Parsen und auf eigenes Muster anwenden (kein Regex) Allgemeine Java-Themen 11
A Datentypen Long.valueOf liefert kein "L" am Ende Allgemeine Java-Themen 3
M Kein Zugriff auf microSD Karten Allgemeine Java-Themen 4
B Input/Output Server Startet, Jedoch Kein Output. Allgemeine Java-Themen 1
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
T JNI: kein Zugriff auf VM in Callback-Methode eines Windows-Hooks Allgemeine Java-Themen 3
Guybrush Threepwood Kein user.home unter Windows8 Allgemeine Java-Themen 7
127.0.0.1 SQL Exception, kein Driver Allgemeine Java-Themen 9
Z Concurrent Modification Exception - HashMap (kein remove) Allgemeine Java-Themen 4
D Eclipse Kein Zugriff auf Inhalt einer referenzierten .jar Allgemeine Java-Themen 5
S Schnell eine fortlaufende nummer erzeugen SQL, kein Primkey Allgemeine Java-Themen 8
P Mail wird nicht gesendet - Muss ich kein PW angeben ? Allgemeine Java-Themen 13
G RegEx kein Unterstrich Allgemeine Java-Themen 2
E kein doppelter Programmaufruf Allgemeine Java-Themen 3
reibi Workspace schon geöffnet (Kein Eclipse Thema) Allgemeine Java-Themen 14
D Kein Zugriff auf WebService ausser localhost Allgemeine Java-Themen 4
H Bestimmten String mit Pattern und Matcher herauslesen => kein erfolg Allgemeine Java-Themen 9
Haave Audio Device Unavailable: Kein gleichzeitiger Zugriff auf Soundsystem möglich Allgemeine Java-Themen 7
Z Boolean Abfrage gibt kein Boolean zurück, aber warum? Allgemeine Java-Themen 6
T GregorianCalendar - kein Februar Allgemeine Java-Themen 6
0 kein Java unter Server 2008 ? Allgemeine Java-Themen 3
I kann JAVA kein Mathe? Allgemeine Java-Themen 10
J Kein Zugriff auf Klassen im Default Package Allgemeine Java-Themen 8
F Threading oder kein Threading - das ist hier die Frage. Allgemeine Java-Themen 23
V FileWriter und Zahlen (Kein Problem, nur Verständnisfrage) Allgemeine Java-Themen 4
T Problem, warum macht der das so(finde kein titel.) Allgemeine Java-Themen 3
D Ich ikann kein Java-Programm starten Allgemeine Java-Themen 10
B Ausführungsproblem: admin, kein admin Allgemeine Java-Themen 2
E Warum kein Import? Allgemeine Java-Themen 3
L Kein Ausführen möglich Allgemeine Java-Themen 3
A Kein finally ausführen trotz verlassen des try blocks? Allgemeine Java-Themen 14
egrath Anonyme Methode - warum hier kein Compilerfehler Allgemeine Java-Themen 2
D kann kein java installieren Allgemeine Java-Themen 2
S Kein Sound in Java Applets unter Win 9x Allgemeine Java-Themen 4
P kein sound bei freenet spielen Allgemeine Java-Themen 2
K Scanner.hasNext findet kein Ende Allgemeine Java-Themen 6
K Problem mit Vererbung - Kein wirklicher Nutzen. Allgemeine Java-Themen 10
Redfrettchen addAll verwendet kein Iterator? Allgemeine Java-Themen 8
P Eclipse: Kein Fehler beim Debuging aber beim normalen run Allgemeine Java-Themen 3
T Feststellen ob kein extra Thread läuft Allgemeine Java-Themen 10
U Versions-Konfusion: Ist long kein object? Allgemeine Java-Themen 3
A Dateistatus abfragen und Datei löschen sobald kein Zugriff Allgemeine Java-Themen 7
M DOS-Shell kennt kein CP850!! Allgemeine Java-Themen 2
D Kein public Konstruktor Allgemeine Java-Themen 4
C Schleife mit leerem Anweisungsblock wird trotz erfüllter Bedingung nicht verlassen Allgemeine Java-Themen 9
xehpuk clone() wegen leerem Cloneable quasi nutzlos? Allgemeine Java-Themen 6
B Exception bei leerem JTable verhindern Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben