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>

以上就是Java&Xml教程(七)使用JDOM修改XML文件内容的内容,更多相关内容请关注PHP中文网(www.php.cn)!

更多相关文章

  1. Java&Xml教程(十)XML作为属性文件使用
  2. xml学习(1)xml的几种文件格式
  3. XML—XML文件约束之DTD详解
  4. xml学习(4) 创建xml 文件
  5. XML文件导入EXCEL
  6. 使用 XML 文件记录操作日志
  7. XMLTextReader和XmlDocument读取XML文件的比较
  8. 创建带有关联的 XML 架构的 XML 文件 && 从 XML 文件创建 XML 架
  9. 将图片读入到Dom中,并将其存为xml文件

随机推荐

  1. pandas100个骚操作:变量类型自动转换
  2. Android(安卓)View中的onMeasure()方法详
  3. 原创丨带你体验一下云上编码的感觉
  4. Cetos 7 配置LAMP的解决办法
  5. 超赞,20个炫酷的数据可视化大屏(含源码)
  6. 安利 5 个拍案叫绝的 Matplotlib 骚操作!
  7. C语言学习心得(七)
  8. pandas100个骚操作:JSON自动解析为DataFra
  9. 这个可视化分析库,让你轻松玩转数据科学!
  10. k8s交付服务总结