dom4j解析xml的demo

我就是我 2022-05-27 03:21 232阅读 0赞

xml文档结构如下:根节点下是子节点的列表,子节点又有自己的子节点。

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <zzsfprzdatalist>
  3. <zzsfprzdata>
  4. <fpdm>2100162160</fpdm>
  5. <fphm>00036027</fphm>
  6. <kprq>2017-12-28 00:00:00</kprq>
  7. <gf_nsrsbh>91441900555584396G</gf_nsrsbh>
  8. <xf_nsrsbh>91210703584196173G</xf_nsrsbh>
  9. <je>19811.32</je>
  10. <se>1188.68</se>
  11. <rzrq>2018-03-05</rzrq>
  12. <rzfs>6</rzfs>
  13. <rzjg>0</rzjg>
  14. </zzsfprzdata>
  15. <zzsfprzdata>
  16. <fpdm>2100162160</fpdm>
  17. <fphm>00036028</fphm>
  18. <kprq>2017-12-28 00:00:00</kprq>
  19. <gf_nsrsbh>91441900555584396G</gf_nsrsbh>
  20. <xf_nsrsbh>91210703584196173G</xf_nsrsbh>
  21. <je>41471.7</je>
  22. <se>2488.3</se>
  23. <rzrq>2018-03-05</rzrq>
  24. <rzfs>6</rzfs>
  25. <rzjg>0</rzjg>
  26. </zzsfprzdata>
  27. <zzsfprzdata>
  28. <fpdm>4403172130</fpdm>
  29. <fphm>44154688</fphm>
  30. <kprq>2017-12-12 00:00:00</kprq>
  31. <gf_nsrsbh>91441900555584396G</gf_nsrsbh>
  32. <xf_nsrsbh>914403001924657767</xf_nsrsbh>
  33. <je>509.43</je>
  34. <se>30.57</se>
  35. <rzrq>2018-03-05</rzrq>
  36. <rzfs>6</rzfs>
  37. <rzjg>0</rzjg>
  38. </zzsfprzdata>
  39. <zzsfprzdata>
  40. <fpdm>4403172130</fpdm>
  41. <fphm>42287655</fphm>
  42. <kprq>2017-12-13 00:00:00</kprq>
  43. <gf_nsrsbh>91441900555584396G</gf_nsrsbh>
  44. <xf_nsrsbh>91440300683754724H</xf_nsrsbh>
  45. <je>64617.12</je>
  46. <se>7107.88</se>
  47. <rzrq>2018-03-05</rzrq>
  48. <rzfs>6</rzfs>
  49. <rzjg>0</rzjg>
  50. </zzsfprzdata>
  51. </zzsfprzdatalist>

使用dom4j解析的demo:

  1. package cn.com.susq;
  2. import org.dom4j.Document;
  3. import org.dom4j.DocumentException;
  4. import org.dom4j.DocumentHelper;
  5. import org.dom4j.Element;
  6. import java.util.ArrayList;
  7. import java.util.HashMap;
  8. import java.util.List;
  9. import java.util.Map;
  10. /** * @author susq * @since 2018-04-10-18:29 */
  11. public class XmlParse {
  12. public static void main(String[] args) {
  13. String xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?><zzsfprzdatalist><zzsfprzdata><fpdm>2100162160</fpdm><fphm>00036027</fphm><kprq>2017-12-28 00:00:00</kprq><gf_nsrsbh>91441900555584396G</gf_nsrsbh><xf_nsrsbh>91210703584196173G</xf_nsrsbh><je>19811.32</je><se>1188.68</se><rzrq>2018-03-05</rzrq><rzfs>6</rzfs><rzjg>0</rzjg></zzsfprzdata><zzsfprzdata><fpdm>2100162160</fpdm><fphm>00036028</fphm><kprq>2017-12-28 00:00:00</kprq><gf_nsrsbh>91441900555584396G</gf_nsrsbh><xf_nsrsbh>91210703584196173G</xf_nsrsbh><je>41471.7</je><se>2488.3</se><rzrq>2018-03-05</rzrq><rzfs>6</rzfs><rzjg>0</rzjg></zzsfprzdata><zzsfprzdata><fpdm>4403172130</fpdm><fphm>44154688</fphm><kprq>2017-12-12 00:00:00</kprq><gf_nsrsbh>91441900555584396G</gf_nsrsbh><xf_nsrsbh>914403001924657767</xf_nsrsbh><je>509.43</je><se>30.57</se><rzrq>2018-03-05</rzrq><rzfs>6</rzfs><rzjg>0</rzjg></zzsfprzdata></zzsfprzdatalist>";
  14. Document doc = null;
  15. // SAXReader可以直接读取xml文件
  16. // SAXReader saxReader = new SAXReader();
  17. // try {
  18. // doc = saxReader.read(new File("D:/test.xml"));
  19. // } catch (DocumentException e) {
  20. // e.printStackTrace();
  21. // }
  22. List list = new ArrayList();
  23. //将xml格式的字符串转换成Document对象
  24. try {
  25. doc = DocumentHelper.parseText(xmlStr);
  26. } catch (DocumentException e) {
  27. e.printStackTrace();
  28. }
  29. //获取根节点
  30. Element root = doc.getRootElement();
  31. //获取根节点下的所有元素
  32. List children = root.elements();
  33. //循环所有子元素
  34. if (children != null && !children.isEmpty()) {
  35. for (Object child : children) {
  36. Element childELement = (Element) child;
  37. // 判断子元素下面还有没有子元素
  38. List grandsons = childELement.elements();
  39. Map<String, Object> grandsonMap = new HashMap<>();
  40. if (grandsons != null && !grandsons.isEmpty()) {
  41. for (Object grandson : grandsons) {
  42. Element grandsonElement = (Element) grandson;
  43. grandsonMap.put(grandsonElement.getName(), grandsonElement.getTextTrim());
  44. }
  45. }
  46. list.add(grandsonMap);
  47. }
  48. }
  49. System.out.println(list.toString());
  50. }
  51. }

发表评论

表情:
评论列表 (有 0 条评论,232人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Dom4j解析xml

     dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的

    相关 dom4j解析Xml

    解析xml结构化文档主要有2种方式: 1)dom解析:文件一次性读入内存,把xml中的所有节点解析成dom树的形式 2)sax解析:文件边读边解析,通过触发事件来解析。不是

    相关 dom4j解析xml

    前言 随着json的出现,xml的使用越来越少了,尤其是springboot的出现,让xml在项目中几乎销声匿迹了。 不过,有的时候我们可能也是需要用到它的。 博主在

    相关 Dom4j解析XML

    前言: XML文件可以用来作为一种小型数据库存在,但更多时候在项目中都是用来当成配置文件用的,也就避免不了对XML文件的增删改查操作。 在java中,解析XML文件的方

    相关 DOM4j解析XML

    DOM 在解析的时候是把整个 XML 文件映射到 Document 的树型结构中,XML 中的元素、属性、文本都能在 Document 中看清,但是它消耗内存,查询速度慢...