我应该读取输入XML中的Turn元素的每个值:
<Section type="report" startTime="0" endTime="182.952">
<Turn speaker="spk1" startTime="7.186" endTime="8.114">
<Sync time="7.186"/>un souci avec une inscription
</Turn>
<Turn speaker="spk2" startTime="8.114" endTime="8.533">
<Sync time="8.114"/>ouais
</Turn>
<Turn speaker="spk1 spk2" startTime="8.533" endTime="9.731">
<Sync time="8.533"/>
<Who nb="1"/>first value!
<Who nb="2"/>second value!
</Turn>
</Section>
所以我使用了JAXB并制作了以下类:
部分:
@XmlRootElement(name="Section")
public class Section {
private List<Turn> turn;
@XmlElement(name="Turn")
public List<Turn> getTurn() {
if(turn == null){
turn = new ArrayList<Turn>();
}
return turn;
}
public void setTurn(List<Turn> turn) {
this.turn = turn;
}
}
转到:
@XmlRootElement(name="Turn")
public class Turn {
private String speaker;
private float startTime;
private float endTime;
private Sync sync;
private String content;
private List<Who> whoList;
@XmlAttribute
public String getSpeaker() {
return speaker;
}
public void setSpeaker(String speaker) {
this.speaker = speaker;
}
public float getStartTime() {
return startTime;
}
@XmlAttribute
public void setStartTime(float startTime) {
this.startTime = startTime;
}
@XmlAttribute
public float getEndTime() {
return endTime;
}
public void setEndTime(float endTime) {
this.endTime = endTime;
}
@XmlValue
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
但是当我想要读取例如Turn的值,其中扬声器等于“spk1 spk2”时,Turn的方法getContent
仅返回“第二个值!”..我怎样才能获得所有内容值!” ?
我知道不允许为一个Element设置带有XmlValue的XmlElement,但是我别无选择,xml文件是这样的,我应该使用这样的许多文件..
提前致谢:)
答案 0 :(得分:0)
我认为你的问题来自你@XmlElement(name="Turn")
的声明。如果您查看以下tutorial from Vogella,由于注释XmlElementWrapper
,您将看到他正在为其列表使用包装器,并在列表的声明处设置注释,而不是在方法之前,如下:
// XmLElementWrapper围绕XML表示生成包装元素 @XmlElementWrapper(name =“bookList”)
// XmlElement设置实体的名称 @XmlElement(name =“book”) private ArrayList bookList;
在您的情况下,我认为JAXB在您希望它处理对象列表时管理对象。
答案 1 :(得分:0)
所以你要处理混合内容。请查看其他问题how-to-deal-with-jaxb-complextype-with-mixedcontent-data和jaxb-xmlmixed-usage-for-reading-xmlvalue-and-xmlelement。使用@XmlMixed
类的注释Turn
可以进行管理。然后,我不太确定你是否需要内容的getter和setter方法。