gpt4 book ai didi

java - 将java对象转换为相应类型的xml

转载 作者:行者123 更新时间:2023-11-30 05:32:58 25 4
gpt4 key购买 nike

当我将对象转换为 xml 时,我得到结果时没有指定适当的字段类型,例如:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "User")
@XmlRootElement(name = "user")
class User: {
var name: String? = null
var age: Int? = null
}

fun toXML(obj: User): String {
val marshaller = JAXBContext.newInstance(User::class.java).createMarshaller()
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true)
val stringWriter = StringWriter()
marshaller.marshal(obj, stringWriter)
return stringWriter.toString()
}

结果:

<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>John</name>
<age>44</age>
</user>

期望的结果:

<?xml version="1.0" encoding="UTF-8"?>
<user>
<name type="String">John</name>
<age type="Integer">44</age>
</user>

如何实现这一目标?

最佳答案

在用户类中用@XmlAttribute注释nameage

@XmlAttribute
protected String name;

@XmlAttribute
protected Integer age;

这里有一个简短的教程:http://blog.bdoughan.com/2011/06/jaxb-and-complex-types-with-simple.html

A quick recall of below mentioned Annotations can ease a lot of work:

| @XmlSchema |将 Java 包映射到 XML namespace 。

| @XmlAccessorType |定义 JAXB 引擎用于绑定(bind)的 Java 类的字段和属性。它有四个值:PUBLIC_MEMBER、FIELD、PROPERTY 和 NONE。

| @XmlAccessOrder |定义子项的顺序。

| @XmlType |将 Java 类映射到模式类型。它定义了其子项的类型名称和顺序。

| @XmlRootElement |定义 XML 根元素。根 Java 类需要在创建时向 JAXB 上下文注册。

| @XmlElement |将字段或属性映射到 XML 元素

| @XmlAttribute |将字段或属性映射到 XML 属性

| @XmlTransient |防止将字段或属性映射到 XML 架构

| @XmlValue |将字段或属性映射到 XML 标记上的文本值。

| @XmlList |将集合映射到由空格分隔的值列表。

关于java - 将java对象转换为相应类型的xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57180859/

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