`

java中对象和xml之间的转换

    博客分类:
  • java
阅读更多
项目中需要生成和解析XML的地方越来越多了。JAXB是把java和对象互转的一项标准技术,看看下面的例子,很容易上手的

package com.liba.link.paymentorder.action;


public class Bar {
private String age;

public String getAge() {
return age;
}

public void setAge(String age) {
this.age = age;
}
}

package com.liba.link.paymentorder.action;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="test")
public class Foo {
private Bar b;

private String name;

public Bar getB() {
return b;
}

public void setB(Bar b) {
this.b = b;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

package com.liba.link.paymentorder.action;

import java.io.StringReader;
import java.io.StringWriter;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

public class JaxbTest {
public static void main(String[] args) {
try {
JAXBContext context = JAXBContext.newInstance(Foo.class);
Marshaller m = context.createMarshaller();
Foo foo = new Foo();
foo.setName("hello");
Bar b = new Bar();
b.setAge("566");
foo.setB(b);

StringWriter s = new StringWriter();
m.marshal(foo, s);
System.out.println(s);

String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><test><b><age>566</age></b><name>hello</name></test>";
Foo newFoo = (Foo) JAXBContext.newInstance(Foo.class).createUnmarshaller().unmarshal(new StringReader(xml));
System.out.println(newFoo);
System.out.println(newFoo.getName());
System.out.println(newFoo.getB().getAge());
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

另外还在在classpath中导入4个jar包,hibernate-all.jar , jboss-embedded-all.jar, thirdparty-all.jar, jaxb-api.jar (2.1版本)就可以了
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics