4. Modificare XML in Java con parser DOM

1. Lettura XML e aggiunta di un nuovo elemento

Situazione iniziale: un XML già esistente composto cosi:

xml-ex1

/*LEGGO e AGGIUNGO ELEMENTO NEL FILE XML*/
	String xmlpath = "./home/cartella/test.xml";
	File xmlFile = new File(xmlpath);
	DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
	try {
		DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
		Document doc = dBuilder.newDocument();

		doc = dBuilder.parse(xmlFile);
						
		//GET ROOT
		Element root = doc.getDocumentElement();
			
		//CREO NUOVO ELEMENT PERSONAGGIO
		Element personaggio2 = doc.createElement("personaggio");
		root.appendChild(personaggio2);
			
		//ASSOCIO ATTRIBUTO
 		Attr attr = doc.createAttribute("gender");
		attr.setValue("donna");
		personaggio2.setAttributeNode(attr);
			
		//INSERISCO SUBELEMENT NOME
		Element nome = doc.createElement("nome");
		Text emily = doc.createTextNode("Emily");
		nome.appendChild(emily);
		personaggio2.appendChild(nome);
			
		//INSERISCO SUBELEMENT COGNOME
		Element cognome = doc.createElement("cognome");
		Text webb = doc.createTextNode("Webb");
		cognome.appendChild(webb);
		personaggio2.appendChild(cognome);

Poi ovviamente dovremo salvare il file XML creato.

e otteremo una situazione di questo tipo:

xml-ex2

Ora vediamo come:

  • correggere il nome “Geordie” in “George”
  • modificare l’attributo gender in “uomo”
  • aggiungere un nuovo node “età” all’ element personaggio

2. Lettura XML e Modifica di un elemento già esistente:

 

/* LEGGO E MODIFICO UN ELEMENTO ESISTENTE */

		DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
		Document doc = dBuilder.newDocument();

		doc = dBuilder.parse(xmlFile);

		// GET ROOT
		Element root = doc.getDocumentElement();

		// GET ELEMENT PERSONAGGIO
		Node personaggio1 = doc.getElementsByTagName("personaggio").item(0);
		// UPDATE ELEMENT
		NodeList nomi = ((Element) personaggio1).getElementsByTagName("nome");
		nomi.item(0).setTextContent("George");
	        
		// UPDATE ATTRIBUTO
	        NamedNodeMap attr = personaggio1.getAttributes();
	        Node nodeAttr = attr.getNamedItem("gender");
	        nodeAttr.setTextContent("uomo");
	        	
	        // AGGIUNGIAMO APPENDIAMO UN NUOVO NODE A PERSONAGGIO1
	        Element eta = doc.createElement("eta");
	        eta.appendChild(doc.createTextNode("16"));
	        personaggio1.appendChild(eta);

Ed ecco il risultato:

xml-ex3

2 pensieri riguardo “4. Modificare XML in Java con parser DOM

Lascia un commento

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