JAXB выделяет первые элементы, встречающиеся в каждом типе в XML-документе, но оставляя дочерние элементы любых вложенных элементов одного и того же типа.Нулевые значения для развёртывания вложенных элементов в JAXB/MOXY
Вкратце, проблематична структура выглядит следующим образом:
sequence-> медиа-> аудио> track-> clipitem (-> последовательности и т.д. и т.п.)
Таким образом, clipitem также может иметь вложенное последовательность, и весь цикл может повторяться рекурсивно.
В первой обнаруженной последовательности всегда установлен носитель.
Однако для вложенной последовательности медиа-элемент всегда пустой (даже если он находится в XML)
классов были созданы с XJC из XSD.
Зачем использовать unmarshall как вложенные элементы? Помимо вложенных элементов все работает нормально. Есть ли что-то особенное для аннотирования вложенных элементов? Код и аннотации довольно просты.
Любые подсказки будут оценены. Спасибо, Джон
JAXBContext jc = JAXBContext.newInstance(Xmeml.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Xmeml xmeml = (Xmeml) unmarshaller.unmarshal(inFile);
@XmlRootElement(name = "sequence")
public class Sequence {
@XmlElement(required = true)
protected String name;
@XmlElement(required = true)
protected BigInteger duration;
@XmlElement(required = true)
protected Rate rate;
@XmlElement(required = true)
protected Timecode timecode;
@XmlElement(required = true)
protected BigInteger in;
@XmlElement(required = true)
protected BigInteger out;
@XmlElement(required = true)
protected Media media;
@XmlRootElement(name = "clipitem")
public class Clipitem {
@XmlElement(required = true)
protected String name;
@XmlElement(required = true)
protected BigInteger duration;
@XmlElement(required = true)
protected Rate rate;
protected boolean enabled;
@XmlElement(required = true)
protected BigInteger in;
@XmlElement(required = true)
protected BigInteger out;
@XmlElement(required = true)
protected BigInteger start;
@XmlElement(required = true)
protected BigInteger end;
@XmlElement(required = true)
protected String masterclipid;
protected boolean ismasterclip;
@XmlElement(required = true)
protected Labels labels;
@XmlElement(required = true)
protected Comments comments;
@XmlElement(required = true)
protected Sequence sequence;
XML-огромна, но вот фрагмент, где средства массовой информации внутри последовательности равна нулю, когда оно не должно быть.
<track>
<clipitem id="Nested Sequence">
<name>Nested Sequence</name>
<duration>815</duration>
<rate>
<ntsc>FALSE</ntsc>
<timebase>25</timebase>
</rate>
<in>0</in>
<out>815</out>
<start>815</start>
<end>1630</end>
<sequence id="Nested Sequence1">
<name>Nested Sequence</name>
<duration>815</duration>
<rate>
<ntsc>FALSE</ntsc>
<timebase>25</timebase>
</rate>
<timecode>
<rate>
<ntsc>FALSE</ntsc>
<timebase>25</timebase>
</rate>
<string>01:00:00:00</string>
<frame>90000</frame>
<source>source</source>
<displayformat>NDF</displayformat>
</timecode>
<in>-1</in>
<out>-1</out>
<media>
<video>
<format>
<samplecharacteristics>
<width>1920</width>
<height>1080</height>
<anamorphic>FALSE</anamorphic>
<pixelaspectratio>NTSC-601</pixelaspectratio>
<fielddominance>lower</fielddominance>
<rate>
<ntsc>FALSE</ntsc>
<timebase>25</timebase>
</rate>
это выглядит okish, вы можете добавить XML, который не разобран правильно. – Zielu
Я добавил фрагмент XML, в котором медиа-последовательность выходит нулевым. Весь XML массивный, поэтому лучше подумать не публиковать его все. –
Место где-то все ваши бобы и exmple xml, который не отменяет правильное расписание (не достаточно целых только одна ветка с ошибкой) и добавьте ссылку на них. Таким образом, мы можем проверить, действительно ли unmarshalling не работает или что-то на вашей стороне. В принципе это должно сработать. Типичным виновником будут проблемы с пространством имен, но вы должны скорее получать сообщения об ошибках, не имеющие нулей. – Zielu