我对此很新,所以对我很轻松。
根据我的理解,JAXB允许程序员使用Java类编写XML,并通过读取XSD来创建正确的XML结构。这样,当模式发生变化时,程序员不必返回并重写一堆硬编码的XML,因为JAXB会根据最新的模式自动将java类转换为XML。这是对的吗?
是否有相当于ColdFusion的JAXB,还是可以与ColdFusion一起使用? CF内置了吗?
如果我离开基地,请告诉我。
提前致谢。
答案 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>