gpt4 book ai didi

java - JAXB - 如何定义映射类来生成节点文本值

转载 作者:行者123 更新时间:2023-12-01 18:26:32 24 4
gpt4 key购买 nike

我的类定义为:

@XmlRootElement( name = "RootNode" )
public class RootNode{
.....
@XmlElement( name = "code", required = true )
protected CodeWord code;

@XmlElement( name = "text" )
protected EncText text;
.....
}

虽然 EncText 类看起来像:

@XmlType( name = "EncText ",
propOrder = {
"language"
} )
public class EncText {
.....
@XmlElement( name = "language" )
protected LANG language;

@XmlAttribute( name = "mediaType" )
@XmlJavaTypeAdapter( CollapsedStringAdapter.class )
protected String mediaType;
.....
}

在 EncText 中,我可能有需要添加为文本节点的文本数据。我希望在编码后有输出,例如:

<RootNode>
<text mediaType="plain/text">
Data come from database.
</text>
</RootNode>

如何在 EncText 中定义属性以及正确的 setter 和 getter 来允许我这样做?我尝试在 EncText 中定义 @XmlValue 属性。但是,错误表明 XmlElement 不能与 XmlValue 共存。我需要这方面的建议。非常感谢。

最佳答案

I tried to define a @XmlValue property in EncText.

这应该可以正常工作,但由于您没有显示您尝试过的内容,因此方法如下:

@XmlRootElement( name = "RootNode" )
class RootNode {
@XmlElement( name = "text" )
protected EncText text;
}
class EncText {
@XmlAttribute( name = "mediaType" )
protected String mediaType;

@XmlValue
protected String textValue;
}

测试

RootNode rootNode = new RootNode();
rootNode.text = new EncText();
rootNode.text.mediaType = "plain/text";
rootNode.text.textValue = "Data come from database.";

JAXBContext jaxbContext = JAXBContext.newInstance(RootNode.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(rootNode, System.out);

输出

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RootNode>
<text mediaType="plain/text">Data come from database.</text>
</RootNode>

关于java - JAXB - 如何定义映射类来生成节点文本值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60221713/

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