xml的读取分析 key value

2023-11-07

package com.basedata.xml;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.basedata.hibernate.BaseData;


public class XmlReadWrite {

 private static final String xmlPath = "/com/basedata/xml/common.xml";

 // 保存配置文件信息
 public static Hashtable enumHash = new Hashtable();

 public static void  readXML() throws IOException,
   DocumentException {
  URL url = XmlReadWrite.class.getResource(xmlPath);
  String rootUrl = url.getPath();
  rootUrl = java.net.URLDecoder.decode(rootUrl, "utf-8");
  File xmlFile = new File(rootUrl);
  FileInputStream fis = null;
  try {
   fis = new FileInputStream(xmlFile);
  } catch (FileNotFoundException e) {
   e.printStackTrace();
   System.err.println("File is not exsit!");
  }
  SAXReader saxReader = new SAXReader();
  Document doc = saxReader.read(fis);
  Element root = doc.getRootElement();
  for (Iterator iter = root.elementIterator(); iter.hasNext();) {
   Element child = (Element) iter.next();
   Attribute childAttr = child.attribute("name");
   String keyName = childAttr.getText();
   List lst = new ArrayList();
   for (Iterator iterCh = child.elementIterator(); iterCh.hasNext();) {
    Element element2 = (Element) iterCh.next();
    Attribute attr = element2.attribute("status");
    String sta = attr.getText();
    String staV = element2.getText();
    BaseData option = new BaseData();
     option.setType(sta);
     option.setTypeName(staV);
     lst.add(option);
   }
   enumHash.put(keyName, lst);
  }
 }
 /**
  * 读取基础数据集合
  * @param name
  * @return
  */
 public static List getEnum(String name) {
  List list = new ArrayList();
  try {
   if (enumHash.size() == 0) {
    readXML();
   }
  } catch (IOException e) {
   e.printStackTrace();
  } catch (DocumentException e) {
   e.printStackTrace();
  }
  list = (ArrayList) enumHash.get(name);
  return list;
 }

  /**
   * 根据枚举名称和key获得值
   *
   * @param nameSpace
   * @param status
   * @return
   */
  public static String getTextByStatus(String nameSpace, String status){
   if (enumHash.size() == 0) {
    getEnum(nameSpace);
   }
   String value = "";
   List list = (List) enumHash.get(nameSpace);
   for (Iterator iter = list.iterator(); iter.hasNext();) {
    BaseData e = (BaseData) iter.next();
    if (e.getType().equalsIgnoreCase(status)) {
     value = e.getTypeName();
     break;
    }
   }
   return value;
  }
}

 -------------------------xml--------------------------------------------------------

 

<?xml version="1.0" encoding="GB2312"?>
<enum>
 <enumitem name="baseType" desc="基础数据类型">
  <option status="1">婚姻状况</option>
  <option status="2">就业状况</option>
  <option status="3">家庭类别</option>
  <option status="4">房屋产权性质</option>
  <option status="5">房屋类型</option>
  <option status="6">与申请人关系</option>
  <option status="7">证件类型</option>
  <option status="8">性别</option>
  <option status="9">职工类型</option>
  <option status="10">单位类别</option>
  <option status="11">单位所属行业</option>
 </enumitem>
 <enumitem name="auditStatus" desc="审核状态">
  <option status="1">未提交</option>
  <option status="2">待审核</option>
  <option status="3">审核通过</option>
  <option status="4">未通过</option>
 </enumitem>
 <enumitem name="verifyType" desc="家庭核定类型">
  <option status="1">核定住房面积</option>
  <option status="2">核定收入</option>
 </enumitem>
 <enumitem name="flowAuditStatus" desc="审核状态">
  <option status="1">待审核</option>
  <option status="2">审核通过</option>
  <option status="3">未通过</option>
 </enumitem>
 
</enum>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xml的读取分析 key value 的相关文章

随机推荐

  • Databend 开源周报第 103 期

    Databend 是一款现代云数仓 专为弹性和高效设计 为您的大规模分析需求保驾护航 自由且开源 即刻体验云服务 https app databend cn What s On In Databend 探索 Databend 本周新进展 遇
  • 解决“no newline at end of file”

    解决 no newline at end of file 问题描述 环境是 win10 vscode python flake8 写代码的时候会报如下错误 原因和解决办法 flake8要求文件每一行都以换行结束 只需要在文件结尾回车即可 最
  • 有奖调研

    2021白帽调研 2021白帽调研 网络世界的特种兵 现实世界的守卫者 你们借键盘指点江山 你们用代码挥斥方遒 技术与战略的完美结合 让每一个漏洞无所遁形 白帽子 是你们的代号 更是你们坚守的目标 尊敬的各位白帽子 为更好的了解白帽子的现状
  • 晶振

    外部晶振稳定 内部晶振的误差比较大 但如果对频率要求不高的话 比如不涉及串口通信和精确定时等的话 用内部晶振就行 内部时钟 频率受温度等其它影响 但是能省下晶振的钱 还有2个I O 如果对频率要求不高 一般是优先选用内部振荡 如果你要省电
  • 详解Linux2.6内核中基于platform机制的驱动模型

    原文地址 http blog csdn net sailor 8318 archive 2010 01 29 5267698 aspx 注 本原创文章发表于Sailor forever 的个人blog 未经本人许可 不得用于商业用途 任何个
  • 网络布线知识点总结

    目录 认识综合布线系统 主流双绞线是超5类和6类 智能建筑的功能包含5A 综合布线的特点 综合布线系统组成 综合布线系统的结构 综合布线系统分级 综合布线系统中国标准 认识综合布线产品 双绞线 双绞线 双绞线结构 双绞线对比光缆的优缺点 双
  • spring boot(二):启动原理解析

    我们开发任何一个Spring Boot项目 都会用到如下的启动类 1 SpringBootApplication 2 public class Application 3 public static void main String arg
  • 计算机无法连接此设备,[修复]目前,此硬件设备未连接到计算机(代码45)

    Windows中的 A程序或功能可能会在相关的硬件端没有响应时失败 这个帖子谈到一个这样的错误代码 当硬件在Windows 10上没有与软件端连接时 它会发挥作用 当Windows检测到同一设备的硬件端问题时 错误代码45可能会出现在设备管
  • VS+QT双击ui文件用Designer打开时出现未指定错误/无法打开XX.ui文件

    在VS与Qt交互中 刚刚会在VS中使用Designer打开某ui文件 工作机制其实是vs利用到了qt vs tools 工具调用designer exe打开某ui文件 下面介绍的方法一就是重置qt vs tools插件 这个插件 个人建议不
  • 【JavaScript高级】ES7-ES13常用新特性

    文章目录 ES7 Array Includes 指数 ES8 Object values Object entries String Padding Trailing Commas Object Descriptors ES9 ES10 f
  • 快速开发app,这个快速开发框架,整合PC、移动端开发,让开发更畅快!

    之前 有发过不少PC端快速开发的文章 但是现在越来越多的项目需要PC和移动端结合 所以 我给大家介绍一下之前快速开发平台的APP版本 希望大家能够体验一下 发表一下自己的看法 下载的话 在官网 www learun cn上有APP二维码 扫
  • 规则引擎Drools使用 第五篇 Drools内置方法

    Drools内置方法 规则文件的RHS部分的主要作用是通过插入 删除或修改工作内存中的Fact数据 来达到控制规则引擎执行的目的 Drools提供了一些方法可以用来操作工作内存中的数据 操作完成后规则引擎会重新进行相关规则的匹配 原来没有匹
  • 全明星激斗服务器维护,《全明星激斗》进阶测试大回顾

    进阶测试正式结束 格斗之城又迎来了关闭的日子 想必各位格斗家一定意犹未尽 感觉还可以再来一局 不过没有关系 等待格斗之城的再次维护结束后 一定会以更好的面貌来迎接大家的 在此之前 安娜找到了负责数据统计的诺亚酱 要到了一些绝密的数据信息 特
  • [现代控制理论]10_可观测性与分离原理_观测器与控制器

    现代控制理论 11 现代控制理论串讲 完结 pdf获取 现代控制理论 10 可观测性与分离原理 观测器与控制器 现代控制理论 9 状态观测器设计 龙伯格观测器 现代控制理论 8 5 线性控制器设计 轨迹跟踪simulink 现代控制理论 8
  • mac下antlr4命令使用

    1 下载 lcc lcc hellow cd usr local lib lcc lcc hellow curl O http www antlr org download antlr 4 0 complete jar 可以看到该目录下出现
  • 【无标题】Java中的锁常见面试题总结

    一 什么是死锁 死锁 不同的线程分别占用对方需要的同步资源不放弃 都在等待对方放弃自己需要的同步资源 就形成了线程的死锁 出现死锁后 不会出现异常 不会出现提示 只是所有的线程都处于阻塞状态 无法继续 二 产生死锁的四个必要条件 1 资源互
  • [渗透&攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包

    这是最近学习渗透和网站攻防的基础性文章 前面文章从数据库原理解读了防止SQL注入 SQLMAP的基础用法 数据库差异备份 Caidao神器 这篇文章将详细讲解MySQL数据库攻防知识 有点类似第一篇文章 然后其核心是解决局部刷新数据的思想
  • 使用 AopContext.currentProxy() 报错:java.lang.IllegalStateException: Cannot find current proxy

    报错信息 java lang IllegalStateException Cannot find current proxy Set exposeProxy property on Advised to true to make it av
  • layui+PHP文件上传

    layui官方网站 http www layui com 一个很好的前端框架 现在也出了后台模板 收费 值得我们学习和借鉴 非常感谢作者 贤心 的开源和维护 一 下载layui部署到项目 在页面引入layui css和layui js 二
  • xml的读取分析 key value

    package com basedata xml import java io ByteArrayInputStream import java io File import java io FileInputStream import j