Rumah > pembangunan bahagian belakang > Tutorial XML/RSS > Java&Xml教程(七)使用JDOM修改XML文件内容

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

黄舟
Lepaskan: 2017-02-22 14:51:35
asal
1979 orang telah melayarinya

JDOM提供了非常灵活的方式操作XML文件,使用JDOM非常简单而且代码简洁可读性强。前面我们学习了如何使用JDOM解析XML文件,本节介绍如何使用JDOM修改XML文件内容。 

在这个教程中,我们准备对下面的XML文件进行修改:
employees.xml

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<?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>

Salin selepas log masuk
Salin selepas log masuk

我们将改变xml中每个Employee元素:
1.修改所有name元素,使它的内容全部变成大写。
2.在gender(性别)为Male(男)的id属性值后追加M,gender(性别)为Female(女) 的id属性值后追加F。
3.删除gender元素。
4.为每个Employee元素增加salary(薪水)子元素,默认值为1000。
下面是程序代码:
JDOMXMLEditor.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

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&#39;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));

    }

 

}

Salin selepas log masuk

需要注意的是上面代码使用命名空间获取所有元素,运行程序输出XML文件内容:
employees_new.xml

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<?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>

Salin selepas log masuk
Salin selepas log masuk

JDOM提供了非常灵活的方式操作XML文件,使用JDOM非常简单而且代码简洁可读性强。前面我们学习了如何使用JDOM解析XML文件,本节介绍如何使用JDOM修改XML文件内容。
在这个教程中,我们准备对下面的XML文件进行修改:
employees.xml

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<?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>

Salin selepas log masuk
Salin selepas log masuk

我们将改变xml中每个Employee元素:
1.修改所有name元素,使它的内容全部变成大写。
2.在gender(性别)为Male(男)的id属性值后追加M,gender(性别)为Female(女) 的id属性值后追加F。
3.删除gender元素。
4.为每个Employee元素增加salary(薪水)子元素,默认值为1000。
下面是程序代码:
JDOMXMLEditor.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

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&#39;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));

    }

 

}

Salin selepas log masuk

需要注意的是上面代码使用命名空间获取所有元素,运行程序输出XML文件内容:
employees_new.xml

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<?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>

Salin selepas log masuk
Salin selepas log masuk

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


Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan