用于Coldfusion的jaxb或等效物

时间:2010-07-01 22:06:14

标签: xml coldfusion schema jaxb

我对此很新,所以对我很轻松。

根据我的理解,JAXB允许程序员使用Java类编写XML,并通过读取XSD来创建正确的XML结构。这样,当模式发生变化时,程序员不必返回并重写一堆硬编码的XML,因为JAXB会根据最新的模式自动将java类转换为XML。这是对的吗?

是否有相当于ColdFusion的JAXB,还是可以与ColdFusion一起使用? CF内置了吗?

如果我离开基地,请告诉我。

提前致谢。

1 个答案:

答案 0 :(得分:3)

如果您是JAXB的资金,您可以轻松使用JavaLoader(从来没有遇到过问题,它是企业就绪的http://javaloader.riaforge.org/)并且使用您的lib几乎相同。好吧,你可能需要这样做“愚蠢”:

var byteClass = createObject("java", "java.lang.Byte").TYPE;
var byteArray = createObject("java","java.lang.reflect.Array").newInstance(byteClass, javacast( "int", 4096 ));

但我认为这比浪费时间找出一些新的图书馆要好得多。

这是一个如何使用STaX2来解析huuge XML文件的例子:

<cfscript>
            var loadPaths = [ expandPath('#application.libpath#java/jars/stax2-api-3.0.1.jar')
                             ,expandPath('#application.libpath#java/jars/woodstox-core-lgpl-4.0.5.jar')];
            var javaloader = createObject("component", "#application.libpath#.java.javaloader.JavaLoader").init(loadPaths); 

            var fileStream = createObject("java","java.io.FileInputStream").init(arguments.file);
            var XMLInputFactory = javaloader.create("org.codehaus.stax2.XMLInputFactory2").newInstance();
            var XMLStreamConstants = CreateObject( "java", "javax.xml.stream.XMLStreamConstants");
            var XMLStreamReader = XMLInputFactory.createXMLStreamReader(fileStream);

</cfscript>