Java 与解组器相比,解组器的优势是什么

Java 与解组器相比,解组器的优势是什么,java,xml,jaxb,sax,Java,Xml,Jaxb,Sax,我将JAXB与SAX结合使用。我正在使用解组器来解组数据。有人提到,在将JAXB与SAX结合时,我们必须使用解组器而不是解组器。然后解组器不是线程安全的 那么,我应该像下面这样将解组代码包装在一个同步块中吗 synchronized(this) { UnmarshallerHandler unmarshallerHandler = unmarshaller.getUnmarshallerHandler(); reader.setContentHandler(unmarshalle

我将JAXB与SAX结合使用。我正在使用解组器来解组数据。有人提到,在将JAXB与SAX结合时,我们必须使用解组器而不是解组器。然后解组器不是线程安全的

那么,我应该像下面这样将解组代码包装在一个同步块中吗

synchronized(this) {
    UnmarshallerHandler unmarshallerHandler = unmarshaller.getUnmarshallerHandler();
    reader.setContentHandler(unmarshallerHandler);
    reader.parse(xml);
    Foo foo = (Foo) unmarshallerHandler.getResult();
}
现在,使用Unmarshaller比使用Unmarshaller有什么优势呢?

引入Unmarshaller是为了让需要显式使用JAXB和SAX解析器的人更容易,也就是说,他们需要做一些特定的设置。当您使用解组器时,JAXB impl正在处理它认为合适的解析


除非您有理由使用解组器,否则您可能应该使用解组器。

我们使用SAX解析器,因为我们没有任何写入操作。因此,我们认为JAXB和SAX会做得很好,我们不希望JAXB决定使用什么样的解析技术。除了在XMLReader上设置一个虚拟EntityResolver之外,我们不做任何设置。