Send As SMS

2005-07-25

对XML处理技术的一些想法

1、Buffer - DOM - AOM 的三层结构
  • XML Buffer:对应于一个XML的字符流存储。XML Buffer的一个优势包括:对于大型的XML,可以采用压缩的方式对XML进行处理,从而减少所需的内存开销。或者直接使用文件系统作为外部存储,从而 可以更少的使用内存。与此同时,XML Buffer在接口的层面上提供了对XML的随机访问。并且可以升级到使用DOM来访问XML。
  • DOM:最为经典的XML API。不过,由于基于XML Buffer,DOM可以采用Lazy化技术,只对活动的DOM对象创建活动的对象,而对不活动的对象可以钝化到XML Buffer中,或者根据需要而激活。这样做的优势可以支持非常快速的Parse,在Parse的过程中无须建立起全部的对象,部分的深层次的对象可以按 需激活。此外,也可以对于大型的文档,使用较小的footprint来存储DOM。Lazy访问即提供了对DOM的透明访问(Client API仍然采用标准的DOM API来访问XML,不需要进行变化)。此外,DOM还可以升级为AOM,提供语义层的访问。
  • AOM:将DOM映射成为Java的对象模型,从而Java可以使用类型化的API对XML进行访问。JAXB2是这种映射模型的一个反映。 虽然JAXB2采用POJO来映射XML,带来了相当的灵活性。但基于接口的映射仍然是非常有价值的,其中,最为重要的是,可以对POJO进行的变化可以 直接的(透明的)反映到DOM、Buffer层面中。AOM虽然提供了强的Java映射处理,但我们仍然不希望失去DOM的动态性。比若说,XML可能进 行扩展,而AOM则无法及时地反映该变化。
2、XML Schema
在XML DOM中,可以获取相应的Schema元信息,例如,一个XML Element有一个对应的XML Schema Type,就像Java对象有相应的JavaClass一样。
AOM的映射信息通过JAXB2的annotation信息标注(可以从class中恢复出对应的Schema信息),当一个Schema对象被映射成为 一个interface时,可以使用bytecode生成的技术自动的生成一个相应的类来。这个生成的类可以实现对DOM的同步。同样,当DOM对象发生 变化时,AOM也可以透明的获得同步。


0 Comments:

张贴评论

<< Home