0

XJC ツールを使用して XSD から派生した Java クラスを取得しました。アンマーシャリングは、デフォルト設定で正常に機能します。ただし、SAX パーサーの実装に切り替えました (SAXSource から: http://docs.oracle.com/javase/6/docs/api/index.html?javax/xml/bind/JAXBContext.html ) 。もちろん 2 倍高速ですが、XML 属性はアンマーシャリングされません。として定義されている属性を意味します。

@XmlAttribute(required=true)
@XmlSchemaType(name = "anySimpleType")
protected String messageId;

に設定されていnullます。XMLで私が持っている

<Message messageId="123">
...
</Message>

他のすべては適切にアンマーシャリングされます。属性を使用するすべてのオブジェクトでこの問題が発生します。

SAXパーサーのApache Xerces実装があります。

4

1 に答える 1

2

パーサーが名前空間を認識するように設定されていて、正しい名前空間が設定されていない限り、JAXB は SAX パーサーで適切に動作しないようです。DOM パーサーは、名前空間対応プロパティを false に設定すると正常に動作します。

于 2012-08-16T11:05:17.847 に答える