jaxb的实例 java解析xml转成javabean
2015-11-27 11:20
555 查看
代码
配置文件cmsversion.xml
通过该代码可以试一下是否成功
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 (high == 0) { if (currentVersion >= low) { return version; } } // 版本以下 if (low == 0) { if (currentVersion <= high) { return version; } } // 版本之间 if (high != 0 && low != 0) { if (currentVersion <= high && low <= currentVersion) { return version; } } } } } return null; } private static Map<String, String> getContent(Version version) { Map<String, String> map = null; List<Entry> entryList = version.getEntry(); if (null != entryList && entryList.size() > 0) { map = new LinkedHashMap<String, String>(); for (Entry entry : entryList) { map.put(entry.getTempletCode(), entry.getTempletVerson()); } } log.debug("content-------------------------" + map); return map; } }
public class Entry { private String templetCode; private String templetVerson; @XmlAttribute public String getTempletCode() { return templetCode; } public void setTempletCode(String templetCode) { this.templetCode = templetCode; } @XmlAttribute public String getTempletVerson() { return templetVerson; } public void setTempletVerson(String templetVerson) { this.templetVerson = templetVerson; } @Override public String toString() { return "Entry [templetCode=" + templetCode + ", templetVerson=" + templetVerson + "]"; } }
public class KeyProms { private String name; private List<Platform> platform; @XmlAttribute public String getName() { return name; } public void setName(String name) { this.name = name; } @XmlElement public List<Platform> getPlatform() { return platform; } public void setPlatform(List<Platform> platform) { this.platform = platform; } @Override public String toString() { return "Key [name=" + name + ", platform=" + platform + "]"; } }
public class Platform { private String name; private List<Version> version; @XmlAttribute public String getName() { return name; } public void setName(String name) { this.name = name; } @XmlElement public List<Version> getVersion() { return version; } public void setVersion(List<Version> version) { this.version = version; } @Override public String toString() { return "Platform [name=" + name + ", version=" + version + "]"; } }
@XmlRootElement(name = "cmsversion") public class Root { private List<KeyProms> keyPromsList; @XmlElement(name = "keyproms") public List<KeyProms> getKeyPromsList() { return keyPromsList; } public void setKeyPromsList(List<KeyProms> keyPromsList) { this.keyPromsList = keyPromsList; } @Override public String toString() { return "Root [keyPromsList=" + keyPromsList + "]"; } }
public class Version { private String versionNumber; private List<Entry> entry; @XmlAttribute public String getVersionNumber() { return versionNumber; } public void setVersionNumber(String versionNumber) { this.versionNumber = versionNumber; } @XmlElementWrapper(name = "content") @XmlElement public List<Entry> getEntry() { return entry; } public void setEntry(List<Entry> entry) { this.entry = entry; } @Override public String toString() { return "Version [versionNumber=" + versionNumber + ", entry=" + entry + "]"; } }
配置文件cmsversion.xml
<?xml version="1.0" encoding="UTF-8"?> <cmsversion> <keyproms name="key"> <platform name="iphone"> <version versionNumber="[-5.0]"> <content> <entry templetCode="iphone_1" templetVerson="iphone_value_1" /> <entry templetCode="iphone_2" templetVerson="iphone_value_2" /> <entry templetCode="iphone_3" templetVerson="iphone_value_3" /> <entry templetCode="iphone_4" templetVerson="iphone_value_4" /> </content> </version> <version versionNumber="[6.0-13.4]"> <content> <entry templetCode="iphone_11" templetVerson="iphone_value_11" /> <entry templetCode="iphone_22" templetVerson="iphone_value_22" /> <entry templetCode="iphone_33" templetVerson="iphone_value_33" /> <entry templetCode="iphone_44" templetVerson="iphone_value_44" /> </content> </version> <version versionNumber="[14.5-20.0]"> <content> <entry templetCode="iphone_111" templetVerson="iphone_value_111" /> <entry templetCode="iphone_222" templetVerson="iphone_value_222" /> <entry templetCode="iphone_333" templetVerson="iphone_value_333" /> <entry templetCode="iphone_444" templetVerson="iphone_value_444" /> </content> </version> <version versionNumber="[21.1-]"> <content> <entry templetCode="iphone_1111" templetVerson="iphone_value_1111" /> <entry templetCode="iphone_2222" templetVerson="iphone_value_2222" /> <entry templetCode="iphone_3333" templetVerson="iphone_value_3333" /> <entry templetCode="iphone_4444" templetVerson="iphone_value_4444" /> </content> </version> </platform> <platform name="android"> <version versionNumber="[-10.0]"> <content> <entry templetCode="android_1" templetVerson="android_value_1" /> <entry templetCode="android_2" templetVerson="android_value_2" /> <entry templetCode="android_3" templetVerson="android_value_3" /> <entry templetCode="android_4" templetVerson="android_value_4" /> </content> </version> <version versionNumber="[10.6-15.4]"> <content> <entry templetCode="android_11" templetVerson="android_value_11" /> <entry templetCode="android_22" templetVerson="android_value_22" /> <entry templetCode="android_33" templetVerson="android_value_33" /> <entry templetCode="android_44" templetVerson="android_value_44" /> </content> </version> <version versionNumber="[15.5-25.0]"> <content> <entry templetCode="android_111" templetVerson="android_value_111" /> <entry templetCode="android_222" templetVerson="android_value_222" /> <entry templetCode="android_333" templetVerson="android_value_333" /> <entry templetCode="android_444" templetVerson="android_value_444" /> </content> </version> <version versionNumber="[25.1-]"> <content> <entry templetCode="android_1111" templetVerson="android_value_1111" /> <entry templetCode="android_2222" templetVerson="android_value_2222" /> <entry templetCode="android_3333" templetVerson="android_value_3333" /> <entry templetCode="android_4444" templetVerson="android_value_4444" /> </content> </version> </platform> </keyproms> <keyproms name="key1"> <platform name="iphone"> <version versionNumber="[-5.0]"> <content> <entry templetCode="iphone_1" templetVerson="iphone_value_1" /> <entry templetCode="iphone_2" templetVerson="iphone_value_2" /> <entry templetCode="iphone_3" templetVerson="iphone_value_3" /> <entry templetCode="iphone_4" templetVerson="iphone_value_4" /> <entry templetCode="iphone_5" templetVerson="iphone_value_5" /> </content> </version> <version versionNumber="[5.6-13.4]"> <content> <entry templetCode="iphone_11" templetVerson="iphone_value_11" /> <entry templetCode="iphone_22" templetVerson="iphone_value_22" /> <entry templetCode="iphone_33" templetVerson="iphone_value_33" /> <entry templetCode="iphone_44" templetVerson="iphone_value_44" /> <entry templetCode="iphone_55" templetVerson="iphone_value_55" /> </content> </version> <version versionNumber="[13.5-20.0]"> <content> <entry templetCode="iphone_111" templetVerson="iphone_value_111" /> <entry templetCode="iphone_222" templetVerson="iphone_value_222" /> <entry templetCode="iphone_333" templetVerson="iphone_value_333" /> <entry templetCode="iphone_444" templetVerson="iphone_value_444" /> <entry templetCode="iphone_555" templetVerson="iphone_value_555" /> </content> </version> <version versionNumber="[21.1-]"> <content> <entry templetCode="iphone_1111" templetVerson="iphone_value_1111" /> <entry templetCode="iphone_2222" templetVerson="iphone_value_2222" /> <entry templetCode="iphone_3333" templetVerson="iphone_value_3333" /> <entry templetCode="iphone_4444" templetVerson="iphone_value_4444" /> <entry templetCode="iphone_5555" templetVerson="iphone_value_5555" /> </content> </version> </platform> <platform name="android"> <version versionNumber="[-10.0]"> <content> <entry templetCode="android_1" templetVerson="android_value_1" /> <entry templetCode="android_2" templetVerson="android_value_2" /> <entry templetCode="android_3" templetVerson="android_value_3" /> <entry templetCode="android_4" templetVerson="android_value_4" /> <entry templetCode="android_5" templetVerson="android_value_5" /> </content> </version> <version versionNumber="[10.6-15.4]"> <content> <entry templetCode="android_11" templetVerson="android_value_11" /> <entry templetCode="android_22" templetVerson="android_value_22" /> <entry templetCode="android_33" templetVerson="android_value_33" /> <entry templetCode="android_44" templetVerson="android_value_44" /> <entry templetCode="android_55" templetVerson="android_value_55" /> </content> </version> <version versionNumber="[15.5-25.0]"> <content> <entry templetCode="android_111" templetVerson="android_value_111" /> <entry templetCode="android_222" templetVerson="android_value_222" /> <entry templetCode="android_333" templetVerson="android_value_333" /> <entry templetCode="android_444" templetVerson="android_value_444" /> <entry templetCode="android_555" templetVerson="android_value_555" /> </content> </version> <version versionNumber="[25.1-]"> <content> <entry templetCode="android_1111" templetVerson="android_value_1111" /> <entry templetCode="android_2222" templetVerson="android_value_2222" /> <entry templetCode="android_3333" templetVerson="android_value_3333" /> <entry templetCode="android_4444" templetVerson="android_value_4444" /> <entry templetCode="android_5555" templetVerson="android_value_5555" /> </content> </version> </platform> </keyproms> </cmsversion>
通过该代码可以试一下是否成功
public class CMSVersionTest { @Test public void CMSVersion() throws Exception { System.out.println(CMSVersion.getCMSVersion("key", "iphone", "4.1")); } }
相关文章推荐
- java web.xml 配置session listener
- Spring事务管理Transaction
- java区分添加和修改方法
- java处理InputStream和字节数组互转
- Java AOP的实现机制
- JAVA与.NET的相互调用——通过Web服务实现相互调用
- Java基础之深入理解泛型
- javaweb学习总结(三十九)——数据库连接池
- jdk环境变量配置
- MyEclipse界面窗口布局恢复
- spring的自定义schema
- 解决启动Eclipse后提示’Running android lint’错误的问题
- spring依赖注入
- mybatis简单sql使用java注解而不是xml配置
- java date和时间戳转化
- Intellij IDEA 14的注册机(Java版)
- java Io梳理
- java 日期格式化
- eclipse 中spring项目配置hibernate-tools
- RestTemplate实践