Я хочу преобразовать поток вывода в Строковый объект

Я хочу преобразовать OutputStream в a String объект. Я имею OutputStream объект, возвращенный после маршалинга объекта JAXB.

46
задан Murmel 26 August 2016 в 13:46
поделиться

1 ответ

не очень знаком с jaxb, из того, что я смог найти, вы можете преобразовать в строку, используя

public String asString(JAXBContext pContext, 
                        Object pObject)
                            throws 
                                JAXBException {

    java.io.StringWriter sw = new StringWriter();

    Marshaller marshaller = pContext.createMarshaller();
    marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
    marshaller.marshal(pObject, sw);

    return sw.toString();
}

ws.apache.org

, но я не уверен о мешающем объекте. еще ищете.

** EDIT

Маршалинг неэлементного элемента

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

marshaller.marshal (new JAXBElement (
new QName ("", "rootTag"), Point. class, new Point (...)));

Это помещает элемент в качестве корневого элемента , за которым следует содержимое объекта. Вы действительно можете использовать его с классом, который имеет @XmlRootElement, и который просто переименовывает имя корневого элемента.

На первый взгляд второй параметр Point.class может показаться избыточным, но на самом деле он необходим , чтобы определить, будет ли маршаллер производить (печально известный ) @xsi: тип. В этом примере и класс, и экземпляр являются Point, поэтому вы не увидите @xsi: type. Но если они разные, вы это увидите.

Это также можно использовать для маршалинга простого объекта , такого как String или целое число .

marshaller.marshal (новый JAXBElement (
новый QName ("", "rootTag"), String.class, "foo bar"));

Но, к сожалению, его нельзя использовать для маршалинга таких объектов, как List или Map, поскольку с ними не обращаются как с первоклассными гражданами в мире JAXB.

найдено ЗДЕСЬ

94
ответ дан 26 November 2019 в 20:19
поделиться
Другие вопросы по тегам:

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