1,解析的使用步骤范例:

a,xml文件:

  1. //xml文件:
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <contactList>
  4. <contact id="1" vip="true">
  5. <name>潘金莲</name>
  6. <gender>女</gender>
  7. <email>panpan@itcast.cn</email>
  8. </contact>
  9. <!-- id vip 是属性名 -->
  10. <contact id="2" vip="false">
  11. <!-- 在属性下面的是子元素名:name ,被子元素包括的是子元素文本 -->
  12. <name>武松</name>
  13. <gender id="1000">男</gender>
  14. <email>wusong@itcast.cn</email>
  15. </contact>
  16. <contact id="3">
  17. <name>武大狼</name>
  18. <gender>男</gender>
  19. <email>wuda@itcast.cn</email>
  20. </contact>
  21. <message>
  22. <name>小王</name>
  23. </message>
  24. <name>老王</name>
  25. </contactList>

b,Contcact属性定义类:

  1. /**
  2. * @author Jztice5
  3. * @date 2022年02月25日 上午 11:05
  4. */
  5. public class Contcact {
  6. private int id;
  7. private boolean vip;
  8. private String name;
  9. private String gender;
  10. private String email;
  11. public Contcact () {
  12. }
  13. public Contcact (int id, boolean vip, String name, String gender, String email) {
  14. this.id = id;
  15. this.vip = vip;
  16. this.name = name;
  17. this.gender = gender;
  18. this.email = email;
  19. }
  20. /**
  21. * 获取
  22. * @return id
  23. */
  24. public int getId () {
  25. return id;
  26. }
  27. /**
  28. * 设置
  29. * @param id
  30. */
  31. public void setId (int id) {
  32. this.id = id;
  33. }
  34. /**
  35. * 获取
  36. * @return vip
  37. */
  38. public boolean isVip () {
  39. return vip;
  40. }
  41. /**
  42. * 设置
  43. * @param vip
  44. */
  45. public void setVip (boolean vip) {
  46. this.vip = vip;
  47. }
  48. /**
  49. * 获取
  50. * @return name
  51. */
  52. public String getName () {
  53. return name;
  54. }
  55. /**
  56. * 设置
  57. * @param name
  58. */
  59. public void setName (String name) {
  60. this.name = name;
  61. }
  62. /**
  63. * 获取
  64. * @return gender
  65. */
  66. public String getGender () {
  67. return gender;
  68. }
  69. /**
  70. * 设置
  71. * @param gender
  72. */
  73. public void setGender (String gender) {
  74. this.gender = gender;
  75. }
  76. /**
  77. * 获取
  78. * @return email
  79. */
  80. public String getEmail () {
  81. return email;
  82. }
  83. /**
  84. * 设置
  85. * @param email
  86. */
  87. public void setEmail (String email) {
  88. this.email = email;
  89. }
  90. @Override
  91. public String toString () {
  92. return "Contcact{" +
  93. "id=" + id +
  94. ", vip=" + vip +
  95. ", name='" + name + '\'' +
  96. ", gender='" + gender + '\'' +
  97. ", email='" + email + '\'' +
  98. '}';
  99. }
  100. }

c,main方法类:

  1. import org.dom4j.Document;
  2. import org.dom4j.DocumentException;
  3. import org.dom4j.Element;
  4. import org.dom4j.io.SAXReader;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. /**
  8. * @author Jztice5
  9. * @date 2022年02月25日 上午 11:08
  10. */
  11. public class Text01 {
  12. public static void main (String[] args) throws DocumentException {
  13. //1,创建解析器
  14. SAXReader saxReader = new SAXReader();
  15. //2,使用解析器解析xml
  16. Document read = saxReader.read("day14_A\\XML\\Contact.xml");
  17. //3,获取根元素
  18. Element rootElement = read.getRootElement();
  19. //获取根元素的名字
  20. String name = rootElement.getName();
  21. System.out.println(name);
  22. //获取一个指定名字的子元素
  23. Element contact = rootElement.element("contact");
  24. //获取根元素下的所有子元素
  25. List <Element> elementlists = rootElement.elements("contact");
  26. //创建保存的集合
  27. ArrayList <Contcact> list = new ArrayList <>();
  28. //遍历所有子元素
  29. for (Element element : elementlists) {
  30. //输出子元素的名字
  31. System.out.println(element.getName());
  32. //通过属性名获取对应的属性值;attributeValue
  33. String idStr = element.attributeValue("id");
  34. int id = Integer.parseInt(idStr);
  35. String vipStr = element.attributeValue("vip");
  36. boolean vip = Boolean.parseBoolean(vipStr);
  37. //通过子元素名获取子元素的文本;elementText
  38. String name1 = element.elementText("name");
  39. String gender = element.elementText("gender");
  40. String email = element.elementText("email");
  41. //将获取到的数据存进对象
  42. Contcact c = new Contcact(id, vip, name1, gender, email);
  43. //再把对象添加到list集合
  44. list.add(c);
  45. }
  46. //用的时候直接在集合拿就行了
  47. for (Contcact contcact : list) {
  48. System.out.println(contcact);
  49. }
  50. }
  51. }