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

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

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

开发过程步骤

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

1. 现有的jdom_users.xml文件

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

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <Users>
  3. <User id= "1">
  4. <firstName>Ramesh</firstName>
  5. <lastName>Fadatare</lastName>
  6. <age>28</age>
  7. <gender>Male</gender>
  8. </User>
  9. <User id= "2">
  10. <firstName>John</firstName>
  11. <lastName>Cena</lastName>
  12. <age>45</age>
  13. <gender>Male</gender>
  14. </User>
  15. <User id= "3">
  16. <firstName>Tom</firstName>
  17. <lastName>Cruise</lastName>
  18. <age>40</age>
  19. <gender>Male</gender>
  20. </User>
  21. </Users>

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

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

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

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

  1. package net.javaguides.javaxmlparser.jdom;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.util.List;
  6. import org.jdom2.Document;
  7. import org.jdom2.Element;
  8. import org.jdom2.JDOMException;
  9. import org.jdom2.input.SAXBuilder;
  10. import org.jdom2.output.Format;
  11. import org.jdom2.output.XMLOutputter;
  12. public class UpdateXMLFile {
  13. public static void main(String[] args) throws JDOMException, IOException {
  14. // we can create JDOM Document from DOM, SAX and STAX Parser Builder classes
  15. String fileName = "jdom_users.xml";
  16. SAXBuilder builder = new SAXBuilder();
  17. File xmlFile = new File(fileName);
  18. Document jdomDoc = (Document) builder.build(xmlFile);
  19. // Get list of User element
  20. Element rootElement = jdomDoc.getRootElement();
  21. List < Element > listUserElement = rootElement.getChildren("User");
  22. // loop through to edit every User element
  23. for (Element userElement: listUserElement) {
  24. // change the name to BLOCK letters
  25. String name = userElement.getChildText("firstName");
  26. if (name != null)
  27. userElement.getChild("firstName").setText(name.toUpperCase());
  28. // edit the ID attribute based on Gender
  29. String gender = userElement.getChildText("gender");
  30. if (gender != null && gender.equalsIgnoreCase("female")) {
  31. String id = userElement.getAttributeValue("id");
  32. userElement.getAttribute("id").setValue(id + "F");
  33. } else {
  34. String id = userElement.getAttributeValue("id");
  35. userElement.getAttribute("id").setValue(id + "M");
  36. }
  37. // remove gender element as it's not needed anymore
  38. userElement.removeChild("gender");
  39. // add salary element with default value to every user
  40. userElement.addContent(new Element("salary").setText("1000"));
  41. }
  42. // document is processed and edited successfully, lets save it in new file
  43. XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat());
  44. // output xml to console for debugging
  45. // xmlOutputter.output(doc, System.out);
  46. xmlOutputter.output(jdomDoc, new FileOutputStream("updated_jdom_users.xml"));
  47. }
  48. }

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

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <Users>
  3. <User id="1M">
  4. <firstName>RAMESH</firstName>
  5. <lastName>Fadatare</lastName>
  6. <age>28</age>
  7. <salary>1000</salary>
  8. </User>
  9. <User id="2M">
  10. <firstName>JOHN</firstName>
  11. <lastName>Cena</lastName>
  12. <age>45</age>
  13. <salary>1000</salary>
  14. </User>
  15. <User id="3M">
  16. <firstName>TOM</firstName>
  17. <lastName>Cruise</lastName>
  18. <age>40</age>
  19. <salary>1000</salary>
  20. </User>
  21. </Users>

相关文章

最新文章

更多