Doctype in DOM nutzen

Hallo zusammen,

ich hab die schöne Aufgabe ein DIV von zwei verschiedenen Versionen eines XML Dokuments zu machen. Ich habe jedoch das Problem das die beiden originale jeweils einen DocType sowie ein paar Entities definieren.

Dies hier steht direkt im Dokument:
Java:
<!DOCTYPE Document SYSTEM "Document.dtd" [
  <!ENTITY datum "23/02/2010">
  <!ENTITY kunde ".....">
  <!ENTITY firmakunde "....">
  <!ENTITY projekt "....">]>

Ich nutze das w3c.DOM aus Java1.6 . Dies gibt mir lediglich den DocType zurück, wenn ich jedoch das Dokument in eine Datei schreiben will, fehlt dann jedesmal oben genannte Zeilen. Zum schreiben nutze ich foldens Stück Code:

Java:
private void writeDiv(final Document doc) {
		final String name = file1.getName();
		final String filename = name.replace(".xml", "") + "_div.xml";

		try { // Prepare the DOM document for writing 
			final Source source = new DOMSource(doc);
			// Prepare the output file 
			final File file = new File(filename);
			final Result result = new StreamResult(file);
			// Write the DOM document to the file 
			final Transformer xformer = TransformerFactory.newInstance()
					.newTransformer();
			xformer.transform(source, result);
		}
		catch (final TransformerConfigurationException e) {
			e.printStackTrace();
		}
		catch (final TransformerException e) {
			e.printStackTrace();
		}
	}

Wie kann ich ihn beim schreiben dazu bringen den DocType sowie die Entities mit zu schreiben?

grüße
keks
 
Ja der Link hat schonmal geholfen, ich hab das mal geändert auf folgendes:

Java:
private void writeDiv(final Document doc) {
		final String name = file1.getName();
		final String filename = name.replace(".xml", "") + "_div.xml";

		try { // Prepare the DOM document for writing 
			final Source source = new DOMSource(doc);
			// Prepare the output file 
			final File file = new File(filename);
			final Result result = new StreamResult(file);
			// Write the DOM document to the file 
			final Transformer xformer = TransformerFactory.newInstance()
					.newTransformer();

			final String docType = doc.getDoctype().getSystemId();
			final String entities = doc.getDoctype().getInternalSubset();

			xformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, docType);
			xformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS,
					entities);
			xformer.transform(source, result);
		}
		catch (final TransformerConfigurationException e) {
			e.printStackTrace();
		}
		catch (final TransformerException e) {
			e.printStackTrace();
		}
	}

Nun ist aber das Problem das er die 2te Zeile setOutputProperty net ausführt, jedenfalls landet kein CDATA_Section im Dokument?
Hat dazu wer eine Lösung?

greetz Keks
 

Ähnliche Java Themen


Oben