1.
public final class XMLBeanUtils { /** * 將Bean轉換為XML * * @param clazzMap * 別名-類名映射Map * @param bean * 要轉換為xml的bean對象 * @return XML字符串 * @throws IOException */ @SuppressWarnings("unchecked") public static String bean2xml(Map<String, Class> clazzMap, Object bean) throws IOException { XStream xstream = new XStream(); Map.Entry<String, Class> m = null; for (Iterator it = clazzMap.entrySet().iterator(); it.hasNext();) { m = (Map.Entry<String, Class>) it.next(); xstream.alias(m.getKey(), m.getValue()); } String xml = xstream.toXML(bean); Document document = null; try { document = DocumentHelper.parseText(xml.replaceAll("__", "_")); } catch (DocumentException e) { System.out.println(e.getMessage()); e.printStackTrace(); } StringWriter writer = new StringWriter(); OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter xmlwriter = new XMLWriter(writer, format); try { xmlwriter.write(document); } catch (Exception e) { e.printStackTrace(); } return (writer.toString()).replaceAll("&#x000A;", "
").replaceAll("&", "&"); } /** * 將XML轉換為Bean * * @param clazzMap * 別名-類名映射Map * @param xml * 要轉換為bean對象的xml字符串 * @return Java Bean對象 */ public static Object xml2Bean(Map<String, Class> clazzMap, String xml) { XStream xstream = new XStream(); xstream.setMode(XStream.NO_REFERENCES); for (Iterator it = clazzMap.entrySet().iterator(); it.hasNext();) { Map.Entry<String, Class> m = (Map.Entry<String, Class>) it.next(); xstream.alias(m.getKey(), m.getValue()); } Object bean = null; try { bean = xstream.fromXML(xml); } catch (Exception e) { bean = e; } return bean; } /** * 獲取XStream對象 * * @param clazzMap * 別名-類名映射Map * @return XStream對象 */ public static XStream getXStreamObject(Map<String, Class> clazzMap) { XStream xstream = new XStream(); for (Iterator it = clazzMap.entrySet().iterator(); it.hasNext();) { Map.Entry<String, Class> m = (Map.Entry<String, Class>) it.next(); xstream.alias(m.getKey(), m.getValue()); } return xstream; } }