采用DOM4J解析xml,带例子

本文介绍了一种使用Java解析XML文件的方法,包括解析过程、类结构和代码实现,适用于XML文件的读取与数据提取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

这里主要是解析一般常用的三级,更多级数可以写死,一层一层的累加,也可以写个灵活的方法来判断级数在解析。例子适合才接触的新人。

解析的xml:

  1. <?xml version="1.0" encoding="gbk"?>  
  2. <ROWDATA>  
  3. <ROW>  
  4.   <a>1111</a>  
  5.   <b>2222</b>  
  6.   <c>3333</c>  
  7.   <d>4444</d>  
  8. </ROW>  
  9. <ROW>  
  10.   <a>aaaa</a>  
  11.   <b>bbbb</b>  
  12.   <c>cccc</c>  
  13.   <d>dddd</d>  
  14. </ROW>  
  15. </ROWDATA>  

PaseXml类:

  1. package com.cn;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.Iterator;  
  6. import java.util.List;  
  7. import java.util.Map;  
  8.   
  9. import org.dom4j.Document;  
  10. import org.dom4j.DocumentException;  
  11. import org.dom4j.Element;  
  12. import org.dom4j.io.SAXReader;  
  13.   
  14. /** 
  15.  * 解析三级xml 
  16.  *  
  17.  */  
  18. public class PaseXml {  
  19.     public List<Map<String, String>> pXml(String fileName) {  
  20.         Map<String, String> map = null;  
  21.         List<Map<String, String>> list = new ArrayList<Map<String, String>>();  
  22.   
  23.         SAXReader reader = new SAXReader();  
  24.         try {  
  25.             Document document = reader.read(fileName);  
  26.             Element root = document.getRootElement();  
  27.             Iterator<?> it = root.elementIterator();  
  28.             while (it.hasNext()) {  
  29.                 map = new HashMap<String, String>();  
  30.                 // ROW节点   
  31.                 Element e = (Element) it.next();  
  32.                 Iterator<?> its = e.elementIterator();  
  33.                 while (its.hasNext()) {  
  34.                     Element el = (Element) its.next();  
  35.                     // xml的键值放入map里面   
  36.                     map.put(el.getName(), el.getText());  
  37.                 }  
  38.                 list.add(map);  
  39.             }  
  40.         } catch (DocumentException e1) {  
  41.             e1.printStackTrace();  
  42.         }  
  43.         return list;  
  44.     }  
  45. }  

main类:

  1. public static void main(String[] args) {  
  2.         PaseXml px = new PaseXml();  
  3.         String fileName = "D:/xmlfile/test.xml";  
  4.         // String fileName = "D:/xmlfile/HOSPITAL.xml";   
  5.         List<Map<String, String>> list = px.pXml(fileName);  
  6.         Iterator<?> it = list.iterator();  
  7.         while (it.hasNext()) {  
  8.             Map<String, String> map = (Map<String, String>) it.next();  
  9.             Iterator<?> itm = map.entrySet().iterator();  
  10.             while (itm.hasNext()) {  
  11.                 Map.Entry entry = (Map.Entry) itm.next();  
  12.                 Object key = entry.getKey();  
  13.                 Object value = entry.getValue();  
  14.                 System.out.println(key + ":" + value);  
  15.             }  
  16.             System.out.println("----------------------------------");  
  17.         }  
  18.     }  

输出结果:

d:4444
b:2222
c:3333
a:1111
----------------------------------
d:dddd
b:bbbb
c:cccc
a:aaaa
----------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值