jaxb的实例 java解析xml转成javabean

来源:互联网 发布:k-means聚类算法python 编辑:程序博客网 时间:2024/06/06 03:22

代码

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;@XmlAttributepublic String getTempletCode() {return templetCode;}public void setTempletCode(String templetCode) {this.templetCode = templetCode;}@XmlAttributepublic String getTempletVerson() {return templetVerson;}public void setTempletVerson(String templetVerson) {this.templetVerson = templetVerson;}@Overridepublic String toString() {return "Entry [templetCode=" + templetCode + ", templetVerson="+ templetVerson + "]";}}

public class KeyProms {private String name;private List<Platform> platform;@XmlAttributepublic String getName() {return name;}public void setName(String name) {this.name = name;}@XmlElementpublic List<Platform> getPlatform() {return platform;}public void setPlatform(List<Platform> platform) {this.platform = platform;}@Overridepublic String toString() {return "Key [name=" + name + ", platform=" + platform + "]";}}

public class Platform {private String name;private List<Version> version;@XmlAttributepublic String getName() {return name;}public void setName(String name) {this.name = name;}@XmlElementpublic List<Version> getVersion() {return version;}public void setVersion(List<Version> version) {this.version = version;}@Overridepublic 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;}@Overridepublic String toString() {return "Root [keyPromsList=" + keyPromsList + "]";}}

public class Version {private String versionNumber;private List<Entry> entry;@XmlAttributepublic String getVersionNumber() {return versionNumber;}public void setVersionNumber(String versionNumber) {this.versionNumber = versionNumber;}@XmlElementWrapper(name = "content")@XmlElementpublic List<Entry> getEntry() {return entry;}public void setEntry(List<Entry> entry) {this.entry = entry;}@Overridepublic 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 {@Testpublic void CMSVersion() throws Exception {System.out.println(CMSVersion.getCMSVersion("key", "iphone", "4.1"));}}


0 0
原创粉丝点击