如何获取XMLEventAllocator的实例?

时间:2010-12-23 12:40:21

标签: java xml streaming stax

我正在尝试使用针对Java EE 5的sun Cursor-to-Event Example来使用StAX解析XML的推荐方法。您应该通过Cursor API遍历XML并分配{{1}必要时使用XMLEvent

Aw笨拙地,sun自己的例子没有编译(至少没有JDK 1.6,即使符合1.5代码)。该示例尝试通过XMLEventAllocator实例化分配器,但JDK中的相应实现类无法从外部访问。


阅读完JavaDocs并在网上搜索后,我发现没什么。


可以从头开始实现new接口,但是当JDK中有完美的实现时,它似乎真的是错误的,除了不是XMLEventAllocator的专家之外让它变得困难做对了。

2 个答案:

答案 0 :(得分:2)

我不会将此示例用作使用StAX的最佳实践。使用StAX,您有两种方法XMLStreamReader和XMLEventReader。两者都为您提供了一个API,用于访问事件以进行深度优先遍历XML文档。使用XMLStream阅读器,您可以根据事件类型从XMLStreamReader请求信息,并使用XMLEventReader为您提供表示原始事件的对象。

我建议直接使用XMLStreamReader API。

答案 1 :(得分:2)

除了支持Blaise建议直接使用游标API之外,即使您确实想使用Event API,也绝对不需要定义自定义XMLEventAllocation实现。你可以这样做(比如添加一些与Even对象一起传递的数据),但这将是一种先进的技术。

因此,如果您想使用Event API,只需要求XMLInputFactory生成XMLEventReader,如下所示:

XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(new FileInputStream("file.xml"));

或者如果您有XMLStreamReader:

XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(streamReader);

这就是你需要做的一切。

男孩,我不知道为什么教程会有那么愚蠢的小代码 - 它没有任何意义。 : - )