gpt4 book ai didi

xml - 如何使用 JAXB 和 Spring 编码非字符串对象

转载 作者:数据小太阳 更新时间:2023-10-29 02:36:30 24 4
gpt4 key购买 nike

我试图关注 this教程,以便使用 Spring 框架创建我自己的 Restful Web 服务。客户端发出 GET 请求,比方说

http://api.myapp/app/students

并且服务器返回对象教室的 xml 版本:

@XmlRootElement(name = "class")
public class Classroom {

private String classId = null;
private ArrayList<Student> students = null;

public Classroom() {
}
public String getClassId() {
return classId;
}
public void setClassId(String classId) {
this.classId = classId;
}
@XmlElement(name="student")
public ArrayList<Student> getStudents() {
return students;
}
public void setStudents(ArrayList<Student> students) {
this.students = students;
}
}

对象 Student 是另一个只包含字符串的 bean。

在我的 app-servlet.xml 中,我复制了以下行:

<bean id="studentsView" class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg ref="jaxbMarshaller" />
</bean>

<!-- JAXB2 marshaller. Automagically turns beans into xml -->
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.spring.datasource.Classroom</value>
<value>com.spring.datasource.Student</value>
</list>
</property>
</bean>

现在我的问题是:如果我想插入一些非字符串对象作为类变量怎么办?假设我想要一个包含 InetAddress 的字符串版本的标签,例如

<inetAddress>192.168.1.1</inetAddress>

我如何强制 JAXB 调用 inetAddress.toString() 方法,使其在 xml 中显示为字符串?在返回的 xml 中,非字符串对象将被忽略!

最佳答案

您可以使用 XmlAdapter 来控制对象如何从 XML 转换。在您的 XmlAdapter 中,您将编写将对象与 String 相互转换的逻辑。

示例

关于xml - 如何使用 JAXB 和 Spring 编码非字符串对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12773323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com