Java&Xml教程(七)使用JDOM修改XML文件内容

互联网 17-2-22
<?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 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 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.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Java&Xml教程(六)使用JDOM解析XML文件

相关资讯