JDOM提供了非常灵活的方式操作XML文件,使用JDOM非常简单而且代码简洁可读性强。前面我们学习了如何使用JDOM解析XML文件,本节介绍如何使用JDOM修改XML文件内容。
在这个教程中,我们准备对下面的XML文件进行修改:
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>
我们将改变xml中每个Employee元素:
1.修改所有name元素,使它的内容全部变成大写。
2.在gender(性别)为Male(男)的id属性值后追加M,gender(性别)为Female(女) 的id属性值后追加F。
3.删除gender元素。
4.为每个Employee元素增加salary(薪水)子元素,默认值为1000。
下面是程序代码:
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)); } }
需要注意的是上面代码使用命名空间获取所有元素,运行程序输出XML文件内容:
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提供了非常灵活的方式操作XML文件,使用JDOM非常简单而且代码简洁可读性强。前面我们学习了如何使用JDOM解析XML文件,本节介绍如何使用JDOM修改XML文件内容。
在这个教程中,我们准备对下面的XML文件进行修改:
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>
我们将改变xml中每个Employee元素:
1.修改所有name元素,使它的内容全部变成大写。
2.在gender(性别)为Male(男)的id属性值后追加M,gender(性别)为Female(女) 的id属性值后追加F。
3.删除gender元素。
4.为每个Employee元素增加salary(薪水)子元素,默认值为1000。
下面是程序代码:
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)); } }
需要注意的是上面代码使用命名空间获取所有元素,运行程序输出XML文件内容:
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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。