Это в точности соответствует атрибуту elementFormDefault
элемента <xs:schema>
(т. Е. Элемента верхнего уровня документа схемы XML). То, что он делает (с этой константой), является состоянием, что элементы из пространства имен, определенного схемой, должны быть представлены с квалификатором (то есть как <foo:bar>
вместо <bar>
); Точный способ объявления пространства имен также зависит от двух стилей. С точки зрения инфо-набора XML эти два стиля полностью эквивалентны; если пространства имен правильно объявлены в XML, JAXB должен быть одинаково счастлив (я считаю, что он должен использовать это значение только при сериализации).
Возможно, вы захотите попытаться сделать свой JAXBContext
, передав класс, который вы ожидаете, так что вы немного менее зависимы от кода обнаружения (предполагая, что действительно создается класс FooBar
):
JAXBContext jbc = JAXBContext.newInstance(FooBar.class);
FooBar customerInput = (FooBar) jbc.createUnmarshaller().unmarshal(source);
(Приведенный выше код абстрагирован от вещей, которые я делаю в наборе тестов моего кода, которые определенно уже работают.)