在使用SAX解析器时,XML属性不会使用JAXB 2解组

问题描述:

我使用XJC工具从XSD派生了我的Java类。取消编组可以使用默认设置正常工作。但是我已经切换到SAX解析器实现(来自SAXSource,位于:http://docs.oracle.com/javase/6/docs/api/index.html?javax/xml/bind/JAXBContext.html),现在解组速度当然要快2倍,但XML属性不会解组。这意味着如在使用SAX解析器时,XML属性不会使用JAXB 2解组

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

设为null被定义该属性。在XML中我有

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

其他一切正确解组。 我对所有使用属性的对象都有此问题。

我有Apache Xerces实现SAX解析器。

似乎JAXB不能正常使用SAX解析器,除非解析器被设置为可识别名称空间并设置了正确的名称空间。 DOM解析器可以正常工作,将名称空间感知属性设置为false。

+0

我有同样的问题,setNamespaceAware(true)添加到工厂,它解决了这个问题。谢谢 – Julian 2013-05-10 11:41:04