Jaxb-порядок xmlns: xsi и xsi: noNamespaceSchemaLocation

Я использую JAXB для создания xml. Используемый             marshaller.setProperty (                     Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION,                     "Бла-bla.xsd");

генерируемый xml


однако приложение, которое разбирает этот xml по какой-либо причине, не анализирует его так, как им нужно, в этом формате


изменение целевого приложения не является вариантом :(

1
nl ja de

1 ответы

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

import javax.xml.bind.*;
import javax.xml.stream.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Interface.class);

        XMLOutputFactory xof = XMLOutputFactory.newFactory();
        XMLStreamWriter xsw = xof.createXMLStreamWriter(System.out);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION, "bla-bla.xsd");
        marshaller.marshal(new Interface(), xsw);
    }

}

<Сильный> Выход

<?xml version="1.0"?>
1
добавлено
благодаря! но поскольку вы упомянули, что проблема все еще остается, мы не можем контролировать порядок. Я сделал то же самое, просто использовал файловый писатель, так как мне нужно было записать в файл.
добавлено автор Yogesh_D, источник