Class 和 xml 之间的相互转化
来源:互联网 发布:灵魂相认知乎 编辑:程序博客网 时间:2024/04/30 17:08
使用dom4J 演示 Xml 和类 之间的相互转化
使用maven:pom.xml 如下:
<!-- start junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> <!-- start XML --> <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>20040902.021138</version> </dependency>
Student 类如下
/** * Created with IntelliJ IDEA. * User: Alvin * Date: 14-8-1 * Time: 下午4:13 * To change this template use File | Settings | File Templates. */public class Student { private int num; private String name; private int age; private String email; public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }}
student.xml 内容如下
<?xml version="1.0" encoding="GB2312" standalone="no"?><xml> <num>2111212049</num> <name><![CDATA[alvin]]></name> <age>25</age> <email><![CDATA[alvalp@live.com]]></email></xml>
XmlUtil 类 用来处理 bean2Xml 和xml2Bean
import com.thoughtworks.xstream.XStream;import com.thoughtworks.xstream.core.util.QuickWriter;import com.thoughtworks.xstream.io.HierarchicalStreamWriter;import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;import com.thoughtworks.xstream.io.xml.StaxDriver;import com.thoughtworks.xstream.io.xml.XppDriver;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;import java.io.Writer;/** * Created with IntelliJ IDEA. * User: Alvin * Date: 14-8-1 * Time: 下午4:31 * To change this template use File | Settings | File Templates. */public class XmlUtil { private static XmlUtil xmlUtil = new XmlUtil(); private static SAXReader saxReader; private static Document document; private static XStream xStream = new XStream( new XppDriver() { public HierarchicalStreamWriter createWriter(Writer out) { return new PrettyPrintWriter(out) { // 对所有xml节点的转换都增加CDATA标记 @SuppressWarnings("rawtypes") public void startNode(String name, Class clazz) { super.startNode(name, clazz); } protected void writeText(QuickWriter writer, String text) { if (!text.matches("^[0-9]+$")) { writer.write("<![CDATA["); writer.write(text); writer.write("]]>"); } else { writer.write(text); } } }; } } ); private XmlUtil() {} ; public static XmlUtil getInstance() { return xmlUtil; } @SuppressWarnings("static-access") public void setFile(String filename) { this.saxReader = new SAXReader(); try { System.out.println(filename); this.document = this.saxReader.read(filename); } catch (DocumentException e) { e.printStackTrace(); } } public String getContentByNodeName(String nodeName) { Element element = (Element) this.document.selectSingleNode("//" + nodeName); return element.getText(); } public Object xml2Bean(String xml, Class beanClass) { XStream xStream = new XStream(new StaxDriver()); xStream.alias("xml", beanClass); return xStream.fromXML(xml); } public String bean2Xml(Object obj, String str) { this.xStream.alias(str, obj.getClass()); return this.xStream.toXML(obj); }}
测试类
import message.req.ReqTextMessage;import org.junit.Before;import org.junit.Test;import java.io.*;/** * Created with IntelliJ IDEA. * User: Alvin * Date: 14-8-3 * Time: 下午1:08 * To change this template use File | Settings | File Templates. */public class XmlUtilTest { private XmlUtil xmlUtil ; @Before public void get(){ this.xmlUtil = XmlUtil.getInstance(); } @Test public void Bean2XMl(){ Student student = new Student(); student.setAge(25); student.setEmail("alvalp@live.com"); student.setNum(2111212049); student.setName("alvin"); String xml = xmlUtil.bean2Xml(student,"xml"); System.out.println("*************** bean To XML **************"); System.out.println(xml); } @Test public void xml2Bean() throws IOException { String filename ="student.xml"; String xml = getXml(filename); Student student = (Student) xmlUtil.xml2Bean(xml,Student.class); System.out.println("************* XML To Bean ***********"); System.out.print("ST: Name: "+student.getName()); } public String getXml(String filename) throws IOException { StringBuffer xml = new StringBuffer(); FileReader in = new FileReader(filename); BufferedReader reader = new BufferedReader(in); String line = null; while((line = reader.readLine()) != null){ xml.append(line); } return xml.toString(); }}
结果显示:
0 0
- Class 和 xml 之间的相互转化
- php数组和xml之间相互转化
- xml数组之间相互转化
- time_t和DATE之间的相互转化
- NSDate和NSString之间的相互转化
- 字符串和整数之间的相互转化
- string 和 int 之间的相互转化
- Xml和Json之间相互转化知多少?
- jdom处理的XML Document 和String 之间的相互转化
- jdom处理的XML Document 和String 之间的相互转化
- string和xml的相互转化
- xml与java对象之间的相互转化
- XML和数据库之间相互的映射
- javaBean和xml之间的相互转换
- Xml和bean之间的相互转换
- Activity之间的相互转化
- UTF8和UTF16和UTF32之间的相互转化
- xml文件和map之间的转化
- HDU 2896 - 病毒侵袭 (AC自动机)
- 朝花夕拾:CSDNBlog使用方法(非官方,持续更新)(已更新二次)
- Eclipse上的Web项目调试
- this关键字
- 【ORACLE】sql*loader的实验一
- Class 和 xml 之间的相互转化
- eclipse安装内存分析工具
- ubuntu: eclipse和gdb调试jni代码;gcj调试jni代码
- 成为高手必须掌握哪几种语言
- mysql 字符集设置
- android中隐藏ListView滚动条
- sqrt()函数详解
- 【1131】C/C++经典程序训练1---最大公约数与最小公倍数(两种方法)
- 【C++基础 09】避免对象的拷贝