当前位置:   article > 正文

通过SaxReader解析xml配置文件(上班第一天)

通过SaxReader解析xml配置文件(上班第一天)
//今天是新公司的第一天,说是要搞培训,写了个xml的解析程序。。。
  1. package com.kaitong.xml;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.util.ArrayList;
  6. import java.util.HashMap;
  7. import java.util.Iterator;
  8. import java.util.List;
  9. import java.util.Map;
  10. import org.dom4j.Document;
  11. import org.dom4j.Element;
  12. import org.dom4j.io.SAXReader;
  13. public class MyXMLPrase {
  14. public static void main(String[] args) throws Exception{
  15. //首先定义一个List格式的数据
  16. String filePath="d:/kaitong.xml";
  17. List<Map<String,String>> list=saxReader(filePath);
  18. print(list);
  19. System.out.println("1.按照for循环删除 2.按照迭代删除");
  20. int chance=System.in.read()-48;
  21. if(1==chance){
  22. deleteByfor(list);
  23. }else if(2==chance){
  24. deleteByIterator(list);
  25. }else{
  26. System.out.println("您输入的参数有误...");
  27. return;
  28. }
  29. print(list);
  30. }
  31. //解析对应的xml文件
  32. public static List<Map<String,String>> saxReader(String filePath){
  33. File xmlFile = new File(filePath);
  34. FileInputStream fis = null;
  35. try {
  36. fis = new FileInputStream(xmlFile);
  37. } catch (FileNotFoundException e) {
  38. e.printStackTrace();
  39. System.err.println("File is not exsit!");
  40. }
  41. SAXReader saxReader = new SAXReader();
  42. List rowList=null;
  43. List<Map<String, String>> resultList = new ArrayList<Map<String,String>>();
  44. try {
  45. //生成文档对应实体
  46. Document doc = saxReader.read(fis);
  47. //获取指定路径下的元素列表,这里指获取所有的data下的row元素
  48. rowList = doc.selectNodes("//xml-body/line");
  49. Iterator iterator=rowList.iterator();
  50. while(iterator.hasNext()){
  51. Map<String,String> nodeMap=new HashMap<String,String>();
  52. Element element = (Element)iterator.next();
  53. //获取line元素的所有属性列表
  54. List elementList = element.elements();
  55. Iterator child=elementList.iterator();
  56. while(child.hasNext()){
  57. //将每个属性转化为一个抽象属性,然后获取其名字和值
  58. Element aa=(Element) child.next();
  59. nodeMap.put(aa.getName(),element.elementText(aa.getName()));
  60. }
  61. resultList.add((HashMap<String, String>) nodeMap);
  62. }
  63. } catch (Exception e) {
  64. e.printStackTrace();
  65. }
  66. return resultList;
  67. }
  68. //打印对应的集合
  69. public static void print(List<Map<String,String>> list){
  70. int size=list.size();
  71. System.out.println("list集合的大小为:"+size);
  72. for(int i=0;i<size;i++){
  73. Map<String,String> map=list.get(i);
  74. for (String key : map.keySet()) {
  75. System.out.println("key= "+ key + " and value= " + map.get(key));
  76. }
  77. System.out.println();
  78. }
  79. }
  80. //删除元素通过for循环
  81. public static void deleteByfor(List<Map<String,String>> list){
  82. int size=list.size();
  83. for(int i=0;i<size-1;i++){
  84. list.remove(0);
  85. }
  86. }
  87. //删除元素通过迭代方式
  88. public static void deleteByIterator(List<Map<String,String>> list){
  89. int size=list.size();
  90. int i=0;
  91. Iterator it=list.iterator();
  92. while(it.hasNext()){
  93. if(++ i == size){
  94. break;
  95. }else{
  96. it.next();
  97. it.remove();
  98. }
  99. }
  100. }
  101. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/188386
推荐阅读
相关标签
  

闽ICP备14008679号