Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JAXB Unmarshalling, Куда еще посмотреть. 
:(
    Опции темы
Zloxa
Дата 3.2.2012, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 2
Всего: 161



Пытаюсь средствами забиндить XMLчик, который содержит конфигурацию клиента.
В результате выполнения метода unmarshal, получаю объект корневого класса, свойства которого == null.

Перед публикацией поста на форуме, попробовал на упрощенном примере схожей структуры, вне проекта. Воспроизвести не смог, сбоку все отлично работает. Потому выкладываю полотнища, не обессудьте.

xsd:
Код

<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns="config.pospostclient"
            targetNamespace="config.pospostclient" 
>
  <xsd:element name="Config">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="OracleConnection">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="ConnectionString" type="xsd:string"/>
              <xsd:element name="User" type="xsd:string"/>
              <xsd:element name="Password" type="xsd:string"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="FtpConnection">
          <xsd:complexType>
           <xsd:sequence>
               <xsd:element name="TemporaryFileDir" type="xsd:string" minOccurs="0"/>
               <xsd:element name="Upload" type="FTPConnectionType"/>
               <xsd:element name="Download" type="FTPConnectionType"/>
           </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:complexType name="FTPConnectionType">
    <xsd:sequence>
      <xsd:element name="Host" type="xsd:string"/>
      <xsd:element name="User" type="xsd:string"/>
      <xsd:element name="Password" type="xsd:string"/>
      <xsd:element name="Dir" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>

с помощью утилиты формирую классы
Код

>xjc.exe config.xsd
parsing a schema...
compiling a schema...
pospostclient\config\Config.java
pospostclient\config\FTPConnectionType.java
pospostclient\config\ObjectFactory.java
pospostclient\config\package-info.java

В ресурсе проекта создаю xml:
Код

<?xml version="1.0" encoding="windows-1251"?>
<Config xmlns="config.pospostclient" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="config.pospostclient src/config.xsd"
          xsi:elementFormDefault="qualified"
          >
  <OracleConnection>
    <ConnectionString>****</ConnectionString>
    <User>***</User>
    <Password>***</Password>
  </OracleConnection>
  <FtpConnection>
    <TemporaryFileDir>./tmp</TemporaryFileDir>
    <Upload>
      <Host>***</Host>
      <User>***</User>
      <Password>***</Password>
      <Dir>***</Dir>
    </Upload>
    <Download>
      <Host>***</Host>
      <User>***</User>
      <Password>***</Password>
      <Dir>***</Dir>
    </Download>
  </FtpConnection>
</Config>

выполняю:
Код

public class test {
    public static void main (String[] args) throws JAXBException {
        JAXBContext context = JAXBContext.newInstance("pospostclient.config");      
        Unmarshaller unmarshaller = context.createUnmarshaller();
        InputStream ris = ConfigLoader.class.getClass().getResourceAsStream("/config.xml");
        Config config = (Config)unmarshaller.unmarshal(ris);
        Config.OracleConnection oraConfig = config.getOracleConnection();
        System.out.println(oraConfig.getConnectionString());
    }
}

В результате config.getOracleConnection() возвращает null, соответственно получаю на следующей строке NullPointerException

Посоветуйте плиз, куда смотреть, где искать косяк?.



Это сообщение отредактировал(а) Zloxa - 3.2.2012, 16:53


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
LSD
Дата 3.2.2012, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 8
Всего: 538



Код

<?xml version="1.0" encoding="windows-1251"?>
<c:Config xmlns:c="config.pospostclient"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="config.pospostclient zloxa.xsd">

    <OracleConnection>
        <ConnectionString>aaa</ConnectionString>
        <User>aaa</User>
        <Password>aaa</Password>
    </OracleConnection>
    <FtpConnection>
        <TemporaryFileDir>./tmp</TemporaryFileDir>
        <Upload>
            <Host>***</Host>
            <User>***</User>
            <Password>***</Password>
            <Dir>***</Dir>
        </Upload>
        <Download>
            <Host>***</Host>
            <User>***</User>
            <Password>***</Password>
            <Dir>***</Dir>
        </Download>
    </FtpConnection>
</c:Config>



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zloxa
Дата 3.2.2012, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 2
Всего: 161



Симптоматика устранилась после добавления параметра схемы elementFormDefault="qualified" 
 smile

Добавлено через 5 минут и 10 секунд
Цитата(LSD @  3.2.2012,  17:15 Найти цитируемый пост)
<c:Config

Да, так тоже работает, и при не установленном elementFormDefault, спасибо, буду разбираться что это значит.  smile 


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
LSD
Дата 3.2.2012, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 8
Всего: 538



Думаю тут более подходящее место.


Цитата(Zloxa @  3.2.2012,  18:21 Найти цитируемый пост)
Да, так тоже работает, и при не установленном elementFormDefault, спасибо, буду разбираться что это значит.

Это явное указание принадлежности к неймспейсу. Правда я не понимаю почему у вложенных элементов его не надо указывать.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zloxa
Дата 6.2.2012, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 2
Всего: 161



Цитата(LSD @  3.2.2012,  17:48 Найти цитируемый пост)
Думаю тут более подходящее место.

Не, в жаве было лучше. Походу это какая то особенность именно JAXB.

На сколько я могу судить из "3.3 Global vs. Local Declarations", " both schema approaches can validate the same, namespace defaulted, document". А у меня, в виду того, что я указал пространство имен по умолчанию, это был именно namespace defaulted документ. Т.е. он валидный, но не читается почему-то JAXB, и, более того, не поднимает ошибку. smile 

Цитата(LSD @  3.2.2012,  17:48 Найти цитируемый пост)
. Правда я не понимаю почему у вложенных элементов его не надо указывать. 

Здесь объясняется.
Если я правильно понял, при  elementFormDefault="unqualified", префиксы должны применяться только к глобальным элементам схемы - элементам объявленным в корне схемы. Прочие элементы считаются локальными в этом пространстве имен.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
LSD
Дата 6.2.2012, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 8
Всего: 538



Цитата(Zloxa @  6.2.2012,  13:47 Найти цитируемый пост)
Походу это какая то особенность именно JAXB.

Я проверил сторонним валидатором (на базе MSXML) он тоже сказал, что <c:Config - правильно, а <Config - нет.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zloxa
Дата 6.2.2012, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 2
Всего: 161



Цитата(LSD @  6.2.2012,  15:16 Найти цитируемый пост)
проверил

Ухты... он оказывается не валидирует вовсе.  smile 
Судя по тому времени, что уходит на загрузку этого XML, я полагал что валидация таки производится и проходит успешно.  smile 


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0583 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.