Используя JAXB к немаршальским элементам с переменными/динамичными именами

Вы можете использовать IBM MQ с JMS

Существуют следующие опции, которые вы можете использовать для отправки данных вашего класса Java в очередь MQ.

TextMessage - может отправлять любые текстовые данные любого типа, т.е. вы можете сериализовать свой java-объект в XML, используя JAXB (или JAX-WS в случае SOAP), или JSON, используя что-то вроде GSON, [112 ] Джексон , JSONP (Resteasy, Джерси в случае REST и т. Д.) Или даже CSV

ObjectMessage - может отправлять java сериализуемые объекты, обратите внимание - [ 115] это рискованно

BytesMessage - может отправлять любые данные (в том числе любой текстовый формат). То есть Вы можете сериализовать ваши java-объекты в некоторый двоичный формат, такой как Буферы протокола Google или некоторые ASN.1 и т. д.

7
задан chetan 7 May 2009 в 14:43
поделиться

2 ответа

Если имя действительно динамическое, то я не думаю, что JAXB поможет вам в этом. Если у вас есть определенное количество различных имен элементов, вы можете использовать наследование, как в другом сообщении. Если количество элементов и имена неизвестны, я бы рекомендовал использовать что-то вроде этого:

@XmlMixed
@XmlAnyElement
public List<Object> getObjects() {
    return objects;
}

Это приведет к тому, что элемент будет просто элементом DOM. Затем вы можете использовать JAXB во второй раз, чтобы перейти от каждого элемента к вашему пользовательскому типу.

Это было бы, если бы вам пришлось использовать JAXB. Возможно, вам будет проще просто использовать SAX или DOM API напрямую для таких данных. JAXB действительно предназначен для четко определенных данных, которые могут быть представлены в виде схемы.

7
ответ дан 7 December 2019 в 07:50
поделиться

Вы можете использовать наследование:

@XmlRootElement(name = "dog")
public class MyDogObject extends MyChildObject {
    //nothing here
}

@XmlRootElement(name = "cat")
public class MyCatObject extends MyChildObject {
    //nothing here
}

Таким образом, вы можете работать с одним и тем же типом объекта, MyChildObject , но при этом гибко управлять структурой XML. Еще одно преимущество состоит в том, что в будущем вы должны определять конкретные XML-узлы dog / cat - они могут быть отображены в соответствующем подклассе, но не в другом, как ожидалось.

0
ответ дан 7 December 2019 в 07:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: