Heim >Backend-Entwicklung >XML/RSS-Tutorial >Java&Xml-Tutorial (7) Verwenden von JDOM zum Ändern des Inhalts von XML-Dateien
JDOM bietet eine sehr flexible Möglichkeit, XML-Dateien zu bedienen. Die Verwendung von JDOM ist sehr einfach und der Code ist prägnant und lesbar. Zuvor haben wir gelernt, wie man JDOM zum Parsen von XML-Dateien verwendet. In diesem Abschnitt wird erläutert, wie man JDOM zum Ändern des Inhalts von XML-Dateien verwendet.
In diesem Tutorial werden wir die folgende XML-Datei ändern:
employees.xml
<?xml version="1.0" encoding="UTF-8"?><Employees xmlns="http://www.journaldev.com/employees"> <Employee id="1"> <age>25</age> <name>Pankaj</name> <gender>Male</gender> <role>Java Developer</role> </Employee> <Employee id="2"> <age>34</age> <name>Mona</name> <gender>Female</gender> <role>Manager</role> </Employee> <Employee id="3"> <age>45</age> <name>Dave</name> <gender>Male</gender> <role>Support</role> </Employee></Employees>
Wir werden jedes Employee-Element in der XML ändern:
1. Ändern Sie alle Namenselemente so, dass ihr Inhalt vollständig in Großbuchstaben geschrieben wird.
2. Hängen Sie M nach dem ID-Attributwert an, wenn das Geschlecht männlich ist, und fügen Sie F nach dem ID-Attributwert an, wenn das Geschlecht weiblich ist.
3. Löschen Sie das Geschlechtselement.
4. Fügen Sie jedem Mitarbeiterelement das Unterelement „Gehalt“ hinzu. Der Standardwert ist 1000.
Das Folgende ist der Programmcode:
JDOMXMLEditor.java
package com.journaldev.xml.jdom; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.Namespace; import org.jdom2.input.SAXBuilder; import org.jdom2.output.Format; import org.jdom2.output.XMLOutputter; public class JDOMXMLEditor { public static void main(String[] args) throws JDOMException, IOException { final Namespace ns = Namespace.getNamespace("http://www.journaldev.com/employees"); //Get the JDOM document org.jdom2.Document doc = useSAXParser("employees.xml"); //Get list of Employee element Element rootElement = doc.getRootElement(); List<Element> listEmpElement = rootElement.getChildren("Employee", ns); //loop through to edit every Employee element for (Element empElement : listEmpElement) { //change the name to BLOCK letters String name = empElement.getChildText("name", ns); if (name != null) empElement.getChild("name", ns).setText(name.toUpperCase()); //edit the ID attribute based on Gender String gender = empElement.getChildText("gender", ns); if (gender != null && gender.equalsIgnoreCase("female")) { String id = empElement.getAttributeValue("id"); empElement.getAttribute("id").setValue(id + "F"); } else { String id = empElement.getAttributeValue("id"); empElement.getAttribute("id").setValue(id + "M"); } //remove gender element as it's not needed anymore empElement.removeChild("gender", ns); //add salary element with default value to every employee empElement.addContent(new Element("salary", ns).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(doc, new FileOutputStream("employees_new.xml")); } //Get JDOM document from SAX Parser private static org.jdom2.Document useSAXParser(String fileName) throws JDOMException, IOException { SAXBuilder saxBuilder = new SAXBuilder(); return saxBuilder.build(new File(fileName)); } }
Es ist zu beachten, dass der obige Code den Namespace verwendet, um alle Elemente abzurufen, und beim Ausführen des Programms den XML-Dateiinhalt ausgibt :
employees_new.xml
<?xml version="1.0" encoding="UTF-8"?><Employees xmlns="http://www.journaldev.com/employees"> <Employee id="1M"> <age>25</age> <name>PANKAJ</name> <role>Java Developer</role> <salary>1000</salary> </Employee> <Employee id="2F"> <age>34</age> <name>MONA</name> <role>Manager</role> <salary>1000</salary> </Employee> <Employee id="3M"> <age>45</age> <name>DAVE</name> <role>Support</role> <salary>1000</salary> </Employee></Employees>
JDOM bietet eine sehr flexible Möglichkeit, XML-Dateien zu bedienen. Die Verwendung von JDOM ist sehr einfach und der Code ist prägnant und lesbar. Zuvor haben wir gelernt, wie man JDOM zum Parsen von XML-Dateien verwendet. In diesem Abschnitt wird erläutert, wie man JDOM zum Ändern des Inhalts von XML-Dateien verwendet.
In diesem Tutorial werden wir die folgende XML-Datei ändern:
employees.xml
<?xml version="1.0" encoding="UTF-8"?><Employees xmlns="http://www.journaldev.com/employees"> <Employee id="1"> <age>25</age> <name>Pankaj</name> <gender>Male</gender> <role>Java Developer</role> </Employee> <Employee id="2"> <age>34</age> <name>Mona</name> <gender>Female</gender> <role>Manager</role> </Employee> <Employee id="3"> <age>45</age> <name>Dave</name> <gender>Male</gender> <role>Support</role> </Employee></Employees>
Wir werden jedes Employee-Element in der XML ändern:
1. Alle Namen ändern Element, wobei der Inhalt ausschließlich in Großbuchstaben geschrieben wird.
2. Hängen Sie M nach dem ID-Attributwert an, wenn das Geschlecht männlich ist, und fügen Sie F nach dem ID-Attributwert an, wenn das Geschlecht weiblich ist.
3. Löschen Sie das Geschlechtselement.
4. Fügen Sie jedem Mitarbeiterelement das Unterelement „Gehalt“ hinzu. Der Standardwert ist 1000.
Das Folgende ist der Programmcode:
JDOMXMLEditor.java
package com.journaldev.xml.jdom; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.Namespace; import org.jdom2.input.SAXBuilder; import org.jdom2.output.Format; import org.jdom2.output.XMLOutputter; public class JDOMXMLEditor { public static void main(String[] args) throws JDOMException, IOException { final Namespace ns = Namespace.getNamespace("http://www.journaldev.com/employees"); //Get the JDOM document org.jdom2.Document doc = useSAXParser("employees.xml"); //Get list of Employee element Element rootElement = doc.getRootElement(); List<Element> listEmpElement = rootElement.getChildren("Employee", ns); //loop through to edit every Employee element for (Element empElement : listEmpElement) { //change the name to BLOCK letters String name = empElement.getChildText("name", ns); if (name != null) empElement.getChild("name", ns).setText(name.toUpperCase()); //edit the ID attribute based on Gender String gender = empElement.getChildText("gender", ns); if (gender != null && gender.equalsIgnoreCase("female")) { String id = empElement.getAttributeValue("id"); empElement.getAttribute("id").setValue(id + "F"); } else { String id = empElement.getAttributeValue("id"); empElement.getAttribute("id").setValue(id + "M"); } //remove gender element as it's not needed anymore empElement.removeChild("gender", ns); //add salary element with default value to every employee empElement.addContent(new Element("salary", ns).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(doc, new FileOutputStream("employees_new.xml")); } //Get JDOM document from SAX Parser private static org.jdom2.Document useSAXParser(String fileName) throws JDOMException, IOException { SAXBuilder saxBuilder = new SAXBuilder(); return saxBuilder.build(new File(fileName)); } }
Es ist zu beachten, dass der obige Code den Namespace verwendet, um alle Elemente abzurufen, und beim Ausführen des Programms den XML-Dateiinhalt ausgibt :
employees_new.xml
<?xml version="1.0" encoding="UTF-8"?><Employees xmlns="http://www.journaldev.com/employees"> <Employee id="1M"> <age>25</age> <name>PANKAJ</name> <role>Java Developer</role> <salary>1000</salary> </Employee> <Employee id="2F"> <age>34</age> <name>MONA</name> <role>Manager</role> <salary>1000</salary> </Employee> <Employee id="3M"> <age>45</age> <name>DAVE</name> <role>Support</role> <salary>1000</salary> </Employee></Employees>
Das obige ist das Java&Xml-Tutorial (7) mit JDOM zum Ändern des Inhalts von XML-Dateien. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.org). .php.cn)!