gpt4 book ai didi

java - 如何鼓励 JAXB 读取 XmlElement 内容字符串?

转载 作者:行者123 更新时间:2023-11-30 03:48:27 25 4
gpt4 key购买 nike

当我尝试解析如下消息时,我没有收到“公告”:

 <?xml version="1.0" encoding="UTF-8"?>
<message messageType="SUBSCRIBER" messageName="ANNOUNCEMENT">
<announcement time="12:30">
Lunchtime!
</announcement>
<announcement time="32:00">
Good night ...
</announcement>
<errorText>Phone number missing, subscriber: Dick</errorText>
</message>

JAXB Java 类看起来非常简单。并且是基于类似的有效信息。在本例中,区别似乎在于我可以在主 block 中拥有两种不同类型的嵌套元素 (XmlElement)。

下面的代码实际上解析了 XML,但它没有调用Announcement.setMessageText() 方法。虽然我可以看到时间属性是从 XML 设置的,并且我有一个用于公告的数组 size=2,但它读取并设置单个 errorText XmlElement。 顺便说一句,我还从代码和 XML 中删除了标签——消息文本的处理没有改变。欢迎提出想法!

 @XmlRootElement(name = "message")
public class AnnouncementMessage
{
@XmlAttribute
public String getMessageName(){
return this.messageName;
}
public void setMessageName( String name ){
this.messageName = name;
}

@XmlAttribute
public String getMessageType(){
return messageType;
}
public void setMessageType( String newMessageType ){
this.messageType = newMessageType;
}

@XmlElement(name = "errorText")
public String getErrorText(){
return errorText;
}
public void setErrorText( String newMsg ){
this.errorText = newMsg;
}

private List<Announcement> announcements = new ArrayList<>();

@XmlElement(name = "announcement")
public List<Announcement> getAnnouncements(){
return this.announcements;
}
public void setAnnouncements( List<Announcement> newAnnouncements ){
this.announcements = newAnnouncements;
}
}

以及公告类:

 @XmlRootElement(name = "announcement")
public class Announcement
{

private String messageText = "";
private String time = "12:00";

XmlAttribute(name ="time")
public String getTime(){
return this.time;
}
public void setTime( String newMsg ){
this.messageText = time;
}

@XmlElement(name="announcement")
public String getMessageText(){
return this.messageText;
}
public void setMessageText( String newMsg ){
this.messageText = newMsg;
}

Announcement(){
}
}

在 XmlElement 中使用 name 参数似乎没有什么区别。我提前致谢

最佳答案

使用@XmlValue消息文本注释:

@XmlValue
public String getMessageText(){
return this.messageText;
}

此外,如 this related answer 中所述根据OP,如果 Announcement 类包含未映射到 XML 或从 XML 映射的 getter/setter 对,则需要在 Announcement 类上使用 @XmlAccessorType(XmlAccessType.NONE)有一个 @XmlTransient 注释。

关于java - 如何鼓励 JAXB 读取 XmlElement 内容字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25006503/

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