Ошибка создания вложенного сложного элемента XMLBeans - PullRequest
0 голосов
/ 22 марта 2011

Я использую XMLBeans для генерации Java-объектов из схемы XSD.Схема имеет следующую структуру:

<schema targetNamespace="" xmlns="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified">
    <element name="Father">
        <complexType>
            <all>
                <element name="Son">
                    <complexType>
                        <all>
                            <element name="Target" type="string" />
                        </all>
                    </complexType>
                </element>
            </all>
        </complexType>
    </element>
</schema>

Схема скомпилирована правильно, и я могу создать экземпляр Отца:

Father father = Father.Factory.newInstance();

Но когда я пытаюсь выполнить:

father.getSon().setTarget("Some String");

Я получил исключение нулевого указателя.При его отладке я увидел, что сын равен нулю (отсюда и исключение).Все, что мне нужно, это установить значение «Target», но я не мог придумать, как это сделать ...

Есть ли способ автоматически построить всю структуру XSD?Кроме того, могу ли я создать экземпляр "Son" вручную и затем получить доступ к его "Target"?

Большое спасибо!

OJ

1 Ответ

0 голосов
/ 22 марта 2011

getSon() метод позволяет получить существующего потомка по имени Сын. Если вы пытаетесь создать новый XML, вы должны начать с пустого документа. Затем вы должны добавить свои элементы, как вы хотите, прежде чем получить к ним доступ. Попробуйте этот код:

FatherDocument fatherDocument = FatherDocument.Factory.newInstance();
Father father = fatherDocument.addNewFather();
Son son = father.addNewSon();
son.setTarget("Some string");
StringWriter writer = new StringWriter();
fatherDocument.save(writer);
System.out.println(writer.toString());

Я сгенерировал этот xml:

<Father><Son><Target>Some string</Target></Son></Father>
...