0

XMLBeansを使用してXSDスキーマからJavaオブジェクトを生成しています。スキーマは次の構造になっています。

<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");

nullポインタ例外が発生します。それをデバッグしたとき、Sonがnullであることがわかりました(したがって例外です)。「ターゲット」の値を設定するだけですが、それを行う方法がわかりませんでした。

すべてのXSD構造を自動構築する方法はありますか?または、「Son」を手動でインスタンス化してから、その「Target」にアクセスできますか?

どうもありがとう!

OJ

4

1 に答える 1

0

getSon()メソッドを使用すると、Sonという既存の子を取得できます。新しい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>
于 2011-03-22T18:48:42.320 に答える