Java对象与XML的相互转换
来源:互联网 发布:淘宝登录名可以改吗 编辑:程序博客网 时间:2024/04/30 19:01
最常用的就是SAX和Dom技术。下面来对这两个技术做一下比较,如下:
下面的表格列出了SAX和DOM在一些方面的对照:
通过对SAX和DOM的分析,它们各有自己的不同应用领域:
SAX适于处理下面的问题:
对大型文档进行处理。
只需要文档的部分内容,或者只需要从文档中得到特定信息。
想创建自己的对象模型的时候。
DOM适于处理下面的问题:
需要对文档进行修改
需要随机对文档进行访问,例如XSLT解析器。
关于使用如上两种技术进行XML和Java对象转换的包非常多,资料也非常齐全,这里就不多说了。需要说的是,目前在转换过程中,比较流程使用注解来进行转换,举个例子:
@XmlRootElement(name = "rootclass")public class RootClass {private ElementClassA a;private ElementClassB b;private String root;private String rootA;@XmlElement(name = "eleClassA")public ElementClassA getA() {return a;}public void setA(ElementClassA a) {this.a = a;}@XmlElement(name = "EleclassA")public ElementClassB getB() {return b;}public void setB(ElementClassB b) {this.b = b;}public String getRoot() {return root;}public void setRoot(String root) {this.root = root;}public String getRootA() {return rootA;}public void setRootA(String rootA) {this.rootA = rootA;}}
public class ElementClassA {private String eleA;private String eleB;private String attrC;@XmlElementpublic String getEleA() {return eleA;}public void setEleA(String eleA) {this.eleA = eleA;}@XmlElement(name = "elebnewname")public String getEleB() {return eleB;}public void setEleB(String eleB) {this.eleB = eleB;}@XmlAttribute()public String getAttrC() {return attrC;}public void setAttrC(String attrC) {this.attrC = attrC;}}
public class ElementClassB {private String attrUserName;private String attrPassword;private String eleCode;@XmlAttributepublic String getAttrUserName() {return attrUserName;}public void setAttrUserName(String attrUserName) {this.attrUserName = attrUserName;}@XmlAttribute(name="password")public String getAttrPassword() {return attrPassword;}public void setAttrPassword(String attrPassword) {this.attrPassword = attrPassword;}@XmlElementpublic String getEleCode() {return eleCode;}public void setEleCode(String eleCode) {this.eleCode = eleCode;}}下面来生成XML文件的测试类如下:
public class Test {public static void main(String[] args) {RootClass rc = new RootClass();ElementClassA a = new ElementClassA();ElementClassB b = new ElementClassB();/** * <eleClassA attrC="attrc"> <eleA>eleA</eleA> <elebnewname>eleB</elebnewname> </eleClassA> */a.setAttrC("attrc");a.setEleA("eleA");a.setEleB("eleB");/* * <EleclassA password="attrPassword" attrUserName="attrUsrName"> <eleCode>eleCode</eleCode> </EleclassA> */b.setAttrPassword("attrPassword");b.setAttrUserName("attrUsrName");b.setEleCode("eleCode");rc.setA(a);rc.setB(b);/** * <root>root</root> <rootA>rootA</rootA> */rc.setRoot("root");rc.setRootA("rootA");JAXBContext context;try {context = JAXBContext.newInstance(RootClass.class);Marshaller mar = context.createMarshaller();mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);mar.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");StringWriter writer = new StringWriter();mar.marshal(rc, writer);System.out.println(writer.toString());} catch (JAXBException e) {e.printStackTrace();}}}生成的XML文件如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><rootclass> <eleClassA attrC="attrc"> <eleA>eleA</eleA> <elebnewname>eleB</elebnewname> </eleClassA> <EleclassA password="attrPassword" attrUserName="attrUsrName"> <eleCode>eleCode</eleCode> </EleclassA> <root>root</root> <rootA>rootA</rootA></rootclass>
现在又出来一个JiBx,使用的核心技术是BCEL(Byte Code Engineering Liberary),可以深入JVM汇编语言进行类操作。在JiBx运行时,使用了一种XPP技术,XPP使用不断增加的数据流处理方式 (不同于Dom和SAX的解析方式),同时允许在解析XML文件时中断,所以效率非常高。
0 0
- xml与java对象的相互转换
- Java对象与XML的相互转换
- java对象与xml 之间相互转换
- 使用 XStream 实现 Java 对象与 XML 的相互转换
- JAXB 可以实现Java对象与XML的相互转换
- java关于对象(javabean)与xml之间的相互转换
- java 实体类与xml之间的相互转换,利用XStream在Java对象和XML之间相互转换
- xml与java对象的相互转化
- JSON与java对象的相互转换
- Java对象与Json的相互转换
- java对象和xml对象的相互转换
- 使用Castor工具完成Java对象与XML之间的相互转换
- 实现Python对象与xml之间的相互转换
- jaxb 简单的对象与xml相互转换
- 关于Java对象和XML之间的相互转换
- 利用JAXB实现java对象和xml的相互转换
- java对象类、XML格式的相互转换
- XStream: Java对象和XML之间相互转换的利器
- 「上海陆家嘴滨江国际啤酒节」9月登场 德国啤酒大篷内畅饮佳酿
- 「上海陆家嘴滨江国际啤酒节」9月登场 德国啤酒大篷内畅饮佳酿
- 「上海陆家嘴滨江国际啤酒节」9月登场 德国啤酒大篷内畅饮佳酿
- Shell代码规范
- qqqqqq
- Java对象与XML的相互转换
- C++研究之在开发中你可能没有考虑到的两个性能优化
- Rabbitmq集群高可用测试
- UVA - 424 Integer Inquiry
- Android --小功能 Android中几种图像特效处理 (一)
- intptr_t详解
- BAT 批处理创建桌面快捷方式代码大全
- 安装完Debian 7后首先做的事
- jsp获取sina天气