powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JAXB
4 сообщений из 4, страница 1 из 1
JAXB
    #39562593
ditban
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть схема:
...
<xs:complexType name="stepType">
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element type="nameType" name="name"/>
<xs:element type="xs:string" name="userdata"/>
<xs:element name="flags">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="metadata">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element type="metaType" name="meta" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element type="actionType" name="action"/>
<xs:element type="xs:string" name="text"/>
<xs:element type="callType" name="call"/>
<xs:element type="stepType" name="step"/>
<xs:element type="commentType" name="comment"/>
</xs:choice>
<xs:attribute type="xs:string" name="id" use="optional"/>
<xs:attribute type="xs:string" name="template_id" use="optional"/>
</xs:complexType>
...
JAXB сгенерил:
public class StepType {
@XmlElementRefs({
@XmlElementRef(name = "flags", type = JAXBElement.class, required = false),
@XmlElementRef(name = "action", type = JAXBElement.class, required = false),
@XmlElementRef(name = "step", type = JAXBElement.class, required = false),
@XmlElementRef(name = "text", type = JAXBElement.class, required = false),
@XmlElementRef(name = "metadata", type = JAXBElement.class, required = false),
@XmlElementRef(name = "userdata", type = JAXBElement.class, required = false),
@XmlElementRef(name = "name", type = JAXBElement.class, required = false),
@XmlElementRef(name = "comment", type = JAXBElement.class, required = false),
@XmlElementRef(name = "call", type = JAXBElement.class, required = false)
})
protected List<JAXBElement<?>> nameOrUserdataOrFlags;


А мне вот нужно получить объект "metadata".
Но метод-геттер:
public List<JAXBElement<?>> getNameOrUserdataOrFlags() {
if (nameOrUserdataOrFlags == null) {
nameOrUserdataOrFlags = new ArrayList<JAXBElement<?>>();
}
return this.nameOrUserdataOrFlags;
}

и соответственно, я получу объект типа JAXBElement, и не смогу понять, какого он типа(
Что делать?
...
Рейтинг: 0 / 0
JAXB
    #39562612
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- Женщина, я правильно иду?
- Да.

Что делать-то хотите ?
...
Рейтинг: 0 / 0
JAXB
    #39562945
ditban
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
Мне нужно получить как-то объекты metadata, userdata, но проблема в том, что они зашиты в @XmlElementRefs.
Метод получения getNameOrUserdataOrFlags() - возращает все эти объекты с одним и тем же типом: JAXBElement
...
Рейтинг: 0 / 0
JAXB
    #39562947
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ditban,

А метод getValue() не описан в документации? Или вы тип привести не можете?

Код: java
1.
2.
3.
if(METADATA_QNAME.equals(element.getName())){
   Metadata md = ((Metadata)element.getValue())
}
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JAXB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]