powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JAXB
13 сообщений из 13, страница 1 из 1
JAXB
    #39613915
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С помощью JAXB производится парсинг XML файлов, получаемых от разных источников. В некоторых случаях в заголовках файлов присутствует ссылка на схему
Код: xml
1.
2.
3.
<TYPES>
...
</TYPES>


А в некоторых она есть
Код: xml
1.
2.
3.
<TYPES xmlns="http://...." xsi:type="TYPE">
...
</TYPES>



Структура файлов одинаковая. Можно ли научить JAXB не обращать внимание на отсутствие указания схемы?
А ещё в файлах могут отсутствовать некоторые необязательные элементы. Если они отсутствуют совсем, т.е. нет даже пустых тегов, то JAXB вываливается с ошибкой NullPointerException. Можно ли что-то сделать с этим?

Заранее спасибо.
...
Рейтинг: 0 / 0
JAXB
    #39613917
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrick,

автор В некоторых случаях в заголовках файлов присутствует ссылка на схему
следует читать как отсутствует
...
Рейтинг: 0 / 0
JAXB
    #39613921
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
JAXB
    #39613923
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrick,

Не очень понятно про схему. Если там XML вообще без namepspace-ов приезжает, то в маппинг можно добавить namespace и тогда без него должно падать.
Я не уверен что именно JAXB вываливается с NPE, а не какой-то ваш код.
...
Рейтинг: 0 / 0
JAXB
    #39613941
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczGarrick,

Не очень понятно про схему. Если там XML вообще без namepspace-ов приезжает, то в маппинг можно добавить namespace и тогда без него должно падать.
Можно про это поподробнее, ссылки какие-нибудь?
BlazkowiczЯ не уверен что именно JAXB вываливается с NPE, а не какой-то ваш код.
Например (не смейтесь, это из 1С такие XML приходят) есть некий адрес, который является необязательным, но если он есть его надо прочесть.
Код: xml
1.
2.
3.
4.
5.
6.
<address>
    <zipcode>XXXXXX</zipcode>
    <country>XXXX</country>
    <area>XXXX</area>
    ....
<address>


При попытке чтения отсутствующего address.getZipcode() вываливается NPE, если адрес в XML файле представлен в полном объёме, хотя бы есть пустые теги, то парсинг происходит без ошибок.
...
Рейтинг: 0 / 0
JAXB
    #39613945
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickНапример (не смейтесь, это из 1С такие XML приходят) есть некий адрес, который является необязательным, но
лишнее... Я тут поправил, а вообще-то там XML с тегами на русском языке, в кодировке cp1251.
Плохо, редактировать свои посты нельзя...
...
Рейтинг: 0 / 0
JAXB
    #39613948
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickМожно про это поподробнее, ссылки какие-нибудь?
https://en.wikipedia.org/wiki/XML_namespace
https://docs.oracle.com/javaee/6/api/javax/xml/bind/annotation/XmlElement.html#namespace()

GarrickПри попытке чтения отсутствующего address.getZipcode() вываливается NPE, если адрес в XML файле представлен в полном объёме, хотя бы есть пустые теги, то парсинг происходит без ошибок.
Ну, покажите что ли stacktrace и сгенерированные классы. Это очень странно. Либо они сгенерились чем-то левым. Либо в схеме было написано что элементы обязательные.
...
Рейтинг: 0 / 0
JAXB
    #39614041
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczGarrick,

Не очень понятно про схему. Если там XML вообще без namepspace-ов приезжает, то в маппинг можно добавить namespace и тогда без него должно падать.
Всё как раз наоборот. Оно и так падает, а надо чтобы не падало ни с namespaces, ни без него.
...
Рейтинг: 0 / 0
JAXB
    #39614048
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickВсё как раз наоборот. Оно и так падает, а надо чтобы не падало ни с namespaces, ни без него.
Тю блин - гугл - JAXB ignore namespace - единственный внятный совет это фильтровать входящий документ
http://cooljavablogs.blogspot.com/2008/08/how-to-instruct-jaxb-to-ignore.html
...
Рейтинг: 0 / 0
JAXB
    #39614233
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczGarrickВсё как раз наоборот. Оно и так падает, а надо чтобы не падало ни с namespaces, ни без него.
Тю блин - гугл - JAXB ignore namespace - единственный внятный совет это фильтровать входящий документ
http://cooljavablogs.blogspot.com/2008/08/how-to-instruct-jaxb-to-ignore.html
Это, конечно сильная идея. По таком же принципу можно и XLST применить. Видать других вариантов нет...
...
Рейтинг: 0 / 0
JAXB
    #39614879
ruzja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GarrickBlazkowiczGarrick,

Не очень понятно про схему. Если там XML вообще без namepspace-ов приезжает, то в маппинг можно добавить namespace и тогда без него должно падать.
Можно про это поподробнее, ссылки какие-нибудь?
BlazkowiczЯ не уверен что именно JAXB вываливается с NPE, а не какой-то ваш код.
Например (не смейтесь, это из 1С такие XML приходят) есть некий адрес, который является необязательным, но если он есть его надо прочесть.
Код: xml
1.
2.
3.
4.
5.
6.
<address>
    <zipcode>XXXXXX</zipcode>
    <country>XXXX</country>
    <area>XXXX</area>
    ....
<address>


При попытке чтения отсутствующего address.getZipcode() вываливается NPE, если адрес в XML файле представлен в полном объёме, хотя бы есть пустые теги, то парсинг происходит без ошибок.

А если проверить перед вызовом address != null ?
...
Рейтинг: 0 / 0
JAXB
    #39614882
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickЭто, конечно сильная идея. По таком же принципу можно и XLST применить. Видать других вариантов нет...
Некоторые реализации JAXB позволяют задать внешний маппинг и можно один класс два раза замапить с неймспейсами и без.
Можно попробовать через наследование, сделать копию объектов и навесить другие аннотации. Общее вынести в родительский класс или в интерфейс.
...
Рейтинг: 0 / 0
JAXB
    #39615172
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ruzjaА если проверить перед вызовом address != null ?
Да, тут конечно мой косяк. В отсутствии инициализированного класса пытался обратиться к его методу.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JAXB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]