5. Convertire e Salvare un Document in XML con Java

Abbiamo visto come creare un nuovo file xml in java , creare un metodo che apra i file XML in Java e un metodo per aggiungere elementi ad un file XML con Java.

Ora  non ci resta che creare un metodo che riconverte il document in XML e lo salva fisicamente in un percorso.

Quando apriamo un XML per poterlo leggere in Java lo trasformiamo in oggetto Document.
Il Document è una struttura java che serve a modificare l’XML.

Il processo di manipolazione XML in Java:

Dal file XML esistente si trasforma in Document per poterlo modificare e poi per mandarlo indietro si deve riconvertire in XML.
Successivamente col salvaFile() salviamo fisicamente l’XML nel disco perché convertendolo era solo in memoria. Salvo i byte nel file che si trova nel path indicato.

cos’è il DOM:

DOM (Document Object Model) è un modo per accedere e aggiornare dinamicamente il contenuto, la struttura e lo stile dei documenti HTML, XHTML e XML.
Grazie a questo standard W3C un documento viene rappresentato in una struttura ad albero, all’interno della quale ogni nodo è un oggetto.

METODO 1: DIVIDO IL PROCESSO, PRIMA CONVERTO DOC IN XML E POI SALVO IL FILE FISICAMENTE

	
public static byte[] saveXML(Document doc) throws TransformerException {

		TransformerFactory tf = TransformerFactory.newInstance();
		tf.setAttribute("indent-number", 4);

		Transformer transformer = tf.newTransformer();

		ByteArrayOutputStream ao = new ByteArrayOutputStream();

		StreamResult output = new StreamResult(ao);
		Source input = new DOMSource(doc);

		transformer.setParameter(OutputKeys.INDENT, "yes");
		transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "yes");

		transformer.transform(input, output);

		return ao.toByteArray();
	}

	public static void salvaFile(String xmlpath, byte[] arrayByte) {

		File file = new File(xmlpath);
		try {

			BufferedOutputStream output = new BufferedOutputStream(
					new FileOutputStream(file.getPath()));

			output.write(arrayByte, 0, arrayByte.length);
			output.flush();
			output.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

Uniamo i puntini nel metodo Main:

Ovviamente poi nel Main avremo quanto segue:

public class testMain {
	public static void main(String[] args) {

		//Apro il file XML tramite path
		Document doc = XML_Utility
				.openXML("/home/salvatore/Scrivania/Zk_progetti/test.xml");
		
		//Aggiungo elementi 

		XML_Utility.addElement(doc, "George", "Gibbs");

		XML_Utility.addElement(doc, "Emily", "Webb");

				
		
		// Riconverto document in XML e salvo nel path
		try {
			byte[] filedata = XML_Utility.saveXML(doc);

			XML_Utility.salvaFile(
					"/home/salvatore/Scrivania/Zk_progetti/test.xml", filedata);

		} catch (TransformerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

METODO 2: CONVERTO & SALVO

Un altro metodo per convertire e salvare il doc in XML:

 

public static void convertSaveXML(Document doc, String xmlpath) {
		try {
			// for output to file, console
			TransformerFactory transformerFactory = TransformerFactory
					.newInstance();
			Transformer transformer = transformerFactory.newTransformer();
			// for pretty print
			transformer.setOutputProperty(OutputKeys.INDENT, "yes");
			DOMSource source = new DOMSource(doc);

			// write to console or file
			StreamResult console = new StreamResult(System.out);
			StreamResult file = new StreamResult(new File(xmlpath));

			// write data
			transformer.transform(source, console);
			transformer.transform(source, file);
		} catch (Exception e) {
			e.printStackTrace();

		}

	}

4 pensieri riguardo “5. Convertire e Salvare un Document in XML con Java

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *