📘 Premium Read: Access my best content on Medium member-only articles — deep dives into Java, Spring Boot, Microservices, backend architecture, interview preparation, career advice, and industry-standard best practices.
🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (176K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
- Existing jdom_users.xml File
- Program to update existing XML file using JDOM Parser
- Updated updated_jdom_users.xml File
<?xml version="1.0" encoding="UTF-8"?>
<Users>
<User id= "1">
<firstName>Ramesh</firstName>
<lastName>Fadatare</lastName>
<age>28</age>
<gender>Male</gender>
</User>
<User id= "2">
<firstName>John</firstName>
<lastName>Cena</lastName>
<age>45</age>
<gender>Male</gender>
</User>
<User id= "3">
<firstName>Tom</firstName>
<lastName>Cruise</lastName>
<age>40</age>
<gender>Male</gender>
</User>
</Users>
- Update all firstName element to block letters.
- Append M for Male and F for Female in ID attribute.
- Remove gender element
- Add new element salary with default value 1000 for each user
package net.javaguides.javaxmlparser.jdom;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
public class UpdateXMLFile {
public static void main(String[] args) throws JDOMException, IOException {
// we can create JDOM Document from DOM, SAX and STAX Parser Builder classes
String fileName = "jdom_users.xml";
SAXBuilder builder = new SAXBuilder();
File xmlFile = new File(fileName);
Document jdomDoc = (Document) builder.build(xmlFile);
// Get list of User element
Element rootElement = jdomDoc.getRootElement();
List < Element > listUserElement = rootElement.getChildren("User");
// loop through to edit every User element
for (Element userElement: listUserElement) {
// change the name to BLOCK letters
String name = userElement.getChildText("firstName");
if (name != null)
userElement.getChild("firstName").setText(name.toUpperCase());
// edit the ID attribute based on Gender
String gender = userElement.getChildText("gender");
if (gender != null && gender.equalsIgnoreCase("female")) {
String id = userElement.getAttributeValue("id");
userElement.getAttribute("id").setValue(id + "F");
} else {
String id = userElement.getAttributeValue("id");
userElement.getAttribute("id").setValue(id + "M");
}
// remove gender element as it's not needed anymore
userElement.removeChild("gender");
// add salary element with default value to every user
userElement.addContent(new Element("salary").setText("1000"));
}
// document is processed and edited successfully, lets save it in new file
XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat());
// output xml to console for debugging
// xmlOutputter.output(doc, System.out);
xmlOutputter.output(jdomDoc, new FileOutputStream("updated_jdom_users.xml"));
}
}
<?xml version="1.0" encoding="UTF-8"?>
<Users>
<User id="1M">
<firstName>RAMESH</firstName>
<lastName>Fadatare</lastName>
<age>28</age>
<salary>1000</salary>
</User>
<User id="2M">
<firstName>JOHN</firstName>
<lastName>Cena</lastName>
<age>45</age>
<salary>1000</salary>
</User>
<User id="3M">
<firstName>TOM</firstName>
<lastName>Cruise</lastName>
<age>40</age>
<salary>1000</salary>
</User>
</Users>
Comments
Post a Comment
Leave Comment