jaxb的实例 java解析xml转成javabean

本文介绍如何利用Java的JAXB库将XML文件转换为Java Bean对象,通过实例代码详细阐述解析过程。
摘要由CSDN通过智能技术生成

代码

public class CMSVersion {

	private CMSVersion() {
	}

	private static Logger log = LoggerFactory.getLogger(CMSVersion.class);

	private static Root root = null;

	static {
		try {
			JAXBContext jaxbContext = JAXBContext.newInstance(Root.class);
			Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
			root = (Root) jaxbUnmarshaller.unmarshal(Root.class
					.getClassLoader().getResourceAsStream("cmsversion.xml"));
		} catch (Exception e) {
			log.error("通过jaxb解析xml为javaBean报错-------------------------" + e);
		}
	}

	public static Map<String, String> getCMSVersion(String keyName,
			String platformName, String versionNumber) {
		log.debug("keyName-------------------------" + keyName);
		log.debug("platformName-------------------------" + platformName);
		log.debug("versionNumber-------------------------" + versionNumber);
		try {
			if (StringUtils.isNotEmpty(keyName)
					&& StringUtils.isNotEmpty(platformName)
					&& StringUtils.isNotEmpty(versionNumber)) {
				if (null != root) {
					// 1.获取key对象
					KeyProms key = getKey(keyName);
					log.debug("key-------------------------" + key);
					if (null != key) {
						// 2.获取平台对象
						Platform platform = getPlatform(key, platformName);
						log.debug("platform-------------------------"
								+ platform);
						if (null != platform) {
							// 3.获取符合的版本
							Version version = getVersion(platform,
									versionNumber);
							log.debug("version-------------------------"
									+ version);
							if (null != version) {
								return getContent(version);
							}
						}
					}
				}
			}
		} catch (Exception e) {
			log.error("返回该版本号下面的所有信息报错-------------------------" + e);
		}
		return null;
	}

	private static KeyProms getKey(String keyName) {
		List<KeyProms> keyList = root.getKeyPromsList();
		if (null != keyList && keyList.size() > 0) {
			for (KeyProms key : keyList) {
				if (keyName.equals(key.getName())) {
					return key;
				}
			}
		}
		return null;

	}

	private static Platform getPlatform(KeyProms key, String platformName) {
		List<Platform> platformList = key.getPlatform();
		if (null != platformList && platformList.size() > 0) {
			for (Platform platform : platformList) {
				if (platformName.equals(platform.getName())) {
					return platform;
				}
			}
		}
		return null;

	}

	private static Version getVersion(Platform platform, String versionNumber) {
		List<Version> versionList = platform.getVersion();
		if (null != versionList && versionList.size() > 0) {
			int currentVersion = Integer.valueOf(versionNumber.split("\\.")[0]);
			for (Version version : versionList) {
				String versionNumberTemp = version.getVersionNumber();
				if (StringUtils.isNotEmpty(versionNumberTemp)) {
					String[] versionNumberArray = versionNumberTemp.substring(
							1, versionNumberTemp.length() - 1).split("-");
					String lowStr = versionNumberArray[0];
					String highStr = versionNumberArray.length == 1 ? ""
							: versionNumberArray[1];
					int low = "".equals(lowStr) ? 0 : Integer.valueOf(lowStr
							.split("\\.")[0]);
					int high = "".equals(highStr) ? 0 : Integer.valueOf(highStr
							.split("\\.")[0]);
					// 版本以上
					if (hi
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值