如何在Java中更新或修改XML文件 - JDOM解析器

x33g5p2x  于2022-10-06 转载在 Java  
字(3.5k)|赞(0)|评价(0)|浏览(450)

在这篇文章中,我们将学习如何使用JDOM Parser在Java中更新或修改现有的XML文件。

开发过程步骤

  1. 现有的jdom_users.xml文件
  2. 使用JDOM解析器更新现有XML文件的程序
  3. 更新的updated_jdom_users.xml文件

1. 现有的jdom_users.xml文件

假设我们有下面的源XML文件。我们将学习如何使用JDOM解析器用java程序修改或编辑这个XML文件。

<?xmlversion="1.0"encoding="UTF-8"?>
<Users>
 <User id= "1">
  <firstName>Ramesh</firstName>
  <lastName>Fadatare</lastName>
  <age>28</age>
  <gender>Male</gender>
 </User>
 <User id= "2">
  <firstName>John</firstName>
  <lastName>Cena</lastName>
  <age>45</age>
  <gender>Male</gender>
 </User>
 <User id= "3">
  <firstName>Tom</firstName>
  <lastName>Cruise</lastName>
  <age>40</age>
  <gender>Male</gender>
 </User>
</Users>

我们想对XML中的每个用户元素进行以下修改。

  • 更新所有的firstName元素为正体字。
  • 在ID属性中添加M代表男性,F代表女性。
  • 删除gender元素。
  • 为每个用户添加默认值为1000的新元素salary

2. 使用JDOM解析器更新现有XML文件的程序

下面是使用JDOM解析器进行上述所有更新的java程序。

package net.javaguides.javaxmlparser.jdom;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

public class UpdateXMLFile {
    public static void main(String[] args) throws JDOMException, IOException {
        // we can create JDOM Document from DOM, SAX and STAX Parser Builder classes
        String fileName = "jdom_users.xml";
        SAXBuilder builder = new SAXBuilder();
        File xmlFile = new File(fileName);
        Document jdomDoc = (Document) builder.build(xmlFile);

        // Get list of User element
        Element rootElement = jdomDoc.getRootElement();
        List < Element > listUserElement = rootElement.getChildren("User");

        // loop through to edit every User element
        for (Element userElement: listUserElement) {

            // change the name to BLOCK letters
            String name = userElement.getChildText("firstName");
            if (name != null)
                userElement.getChild("firstName").setText(name.toUpperCase());

            // edit the ID attribute based on Gender
            String gender = userElement.getChildText("gender");
            if (gender != null && gender.equalsIgnoreCase("female")) {
                String id = userElement.getAttributeValue("id");
                userElement.getAttribute("id").setValue(id + "F");

            } else {
                String id = userElement.getAttributeValue("id");
                userElement.getAttribute("id").setValue(id + "M");
            }

            // remove gender element as it's not needed anymore
            userElement.removeChild("gender");

            // add salary element with default value to every user
            userElement.addContent(new Element("salary").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(jdomDoc, new FileOutputStream("updated_jdom_users.xml"));
    }
}

3. 更新或修改 updated_jdom_users.xml 文件

<?xmlversion="1.0"encoding="UTF-8"?>
<Users>
  <User id="1M">
    <firstName>RAMESH</firstName>
    <lastName>Fadatare</lastName>
    <age>28</age>
    <salary>1000</salary>
  </User>
  <User id="2M">
    <firstName>JOHN</firstName>
    <lastName>Cena</lastName>
    <age>45</age>
    <salary>1000</salary>
  </User>
  <User id="3M">
    <firstName>TOM</firstName>
    <lastName>Cruise</lastName>
    <age>40</age>
    <salary>1000</salary>
  </User>
</Users>

相关文章