JAXB Маршаллинг и демаршаллинг избегая пространств имен - PullRequest
0 голосов
/ 01 августа 2010

это очень распространенная проблема, но мне все еще нужно конкретное решение, если кто-то может предложить мне решение.

JAXB.unmarshal('file', class);

Однако из-за пространств имен, присутствующих в файле XML, объект класса не являетсязаполнение внутренними элементами.

Обнаружение, которое я нашел, состояло в том, чтобы создать объект JAXBContext create и unmarshaller, а затем сделать его осведомленным о пространстве имен.

Мне любопытно, если есть какие-либо другие решенияк тому же.

Ответы [ 2 ]

1 голос
/ 01 августа 2010

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

0 голосов
/ 01 августа 2010

Если узлы всегда соответствуют URI пространств имен, вам следует добавить эту информацию о пространстве имен в привязки JAXB. Многие аннотации JAXB принимают параметр пространства имен (например, XmlRootElement, XmlAttribute, XmlElement и т. Д.). Также есть аннотация уровня пакета под названием @XmlSchema, которую вы можете использовать для указания пространства имен по умолчанию и правил квалификации пространства имен по умолчанию.

...