【问题标题】:What is the advantage of UnmarshallerHandler over UnmarshallerUnmarshallerHandler 比 Unmarshaller 有什么优势
【发布时间】:2014-10-04 05:56:43
【问题描述】:

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

那么我应该将解组代码包装在如下所示的同步块中吗?

synchronized(this) {
    UnmarshallerHandler unmarshallerHandler = unmarshaller.getUnmarshallerHandler();
    reader.setContentHandler(unmarshallerHandler);
    reader.parse(xml);
    Foo foo = (Foo) unmarshallerHandler.getResult();
}

现在使用 UnmarshallerHandler 比 Unmarshaller 有什么优势?

【问题讨论】:

    标签: java xml jaxb sax


    【解决方案1】:

    UnmarshallerHandler 的引入使需要通过 SAX 解析器显式使用 JAXB 的人们更容易(即他们需要做一些特定的设置)。当您使用 Unmarshaller 时,JAXB impl 正在处理它认为合适的解析。

    除非你有理由使用UnmarshallerHandler,否则你应该使用Unmarshaller

    【讨论】:

    • 我们使用的是 SAX 解析器,因为我们没有任何写操作。所以我们认为带有 SAX 的 JAXB 会做得很好,我们不希望 JAXB 决定使用什么解析技术。除了在 XMLReader 上设置一个虚拟 EntityResolver 之外,我们不进行任何设置。
    猜你喜欢
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 2019-11-01
    • 1970-01-01
    • 2016-07-18
    相关资源
    最近更新 更多