1

作成した xsd から生成された jaxb オブジェクトがいくつかあります。以前にコンテンツをマーシャリングしたとき、xml 出力は次のようになりました。

<report xmlns="urn:com-test-person-data:v3">
<person-data>
    .......(Data)
</person-data>
</report>

最近、Windows マシンでのコーディングから Mac に切り替えました。私が使用している jaxb オブジェクトに変更はありません。しかし、マーシャリングされた出力は次のようになります。

<report>
<person-data>
    .......(Data)
</person-data>
</report>

xmlns 属性を削除した可能性があるものを確認するために掘り下げてみましたが、うまくいきませんでした。その属性を使用して、使用されているスキーマのバージョンを確認するため、出力された xml フラグメントに含まれていることが重要です。

マーシャラーを呼び出すコード スニペットを次に示します。

final JAXBContext context = JAXBContext.newInstance(Report.class);
final Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); //$NON-NLS-1$
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(reportJaxBObject, sw);

何か案は?

4

1 に答える 1

0

この問題は通常、package-info.java残りのモデルクラスと一緒にコンパイルまたはパッケージ化されていないことが原因です。package-infoクラスは、名前空間情報を含むが指定されている場所です@XmlSchema

于 2012-06-14T01:27:19.153 に答える