![](/img/trans.png)
[英]Using JAXB, how can I unmarshal an XMLelement with an attribute-defined type to an object based on that attribute?
[英]How can I encourage JAXB to read XmlElement content string?
嘗試解析此類消息時,我沒有收到“公告”:
<?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類看起來非常簡單。 並且基於有效的類似消息。 在這種情況下,差異似乎在於我可以在主塊中具有兩種不同類型的嵌套元素(XmlElement)。
下面的代碼實際上解析XML,但未調用該公告。 setMessageText ()方法。 盡管我可以看到time屬性是從XML設置的,並且公告的數組大小為2,但它讀取並設置了單個errorText XmlElement。 順便說一句 ,我還從代碼和XML中刪除了標記-在處理messageText時,沒有更改。 歡迎想法!
@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參數似乎沒有什么區別。 預先謝謝 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.