Xml 用于Coldfusion的jaxb或同等产品

Xml 用于Coldfusion的jaxb或同等产品,xml,coldfusion,schema,jaxb,Xml,Coldfusion,Schema,Jaxb,我对这很陌生,所以对我放松点 据我所知,JAXB允许程序员使用Java类来编写XML,并负责通过读取XSD来创建适当的XML结构。这样,当模式改变时,程序员就不必回去重写一堆硬编码的XML,因为JAXB会根据最新的模式自动将java类转换为XML。这是对的吗 对于ColdFusion是否有一个与JAXB等价的工具,或者它是否可以与ColdFusion一起使用?CF有内置的吗 如果我离基地很远,请告诉我 提前感谢。如果您非常喜欢JAXB,您可以轻松地使用JavaLoader(从来没有遇到过问题,它

我对这很陌生,所以对我放松点

据我所知,JAXB允许程序员使用Java类来编写XML,并负责通过读取XSD来创建适当的XML结构。这样,当模式改变时,程序员就不必回去重写一堆硬编码的XML,因为JAXB会根据最新的模式自动将java类转换为XML。这是对的吗

对于ColdFusion是否有一个与JAXB等价的工具,或者它是否可以与ColdFusion一起使用?CF有内置的吗

如果我离基地很远,请告诉我


提前感谢。

如果您非常喜欢JAXB,您可以轻松地使用JavaLoader(从来没有遇到过问题,它是企业级的),并使用几乎相同的库。好吧,你可能不得不做这样的“蠢事”:

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>

var loadpath=[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(“组件”,“#application.libpath#.java.javaloader.javaloader”).init(加载路径);
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);

虽然没有多大帮助,但要知道,在ColdFusion中可以非常轻松地运行Java方法。只需实例化带有createObject的对象,就可以在em上运行任何想要的方法(通常)。不,真的,大一号:D。CF社区是银河系这一地区最美好、最礼貌、最友好的社区……是的,总体上看,它是银河系这一地区最漂亮的社区。我们总是对每个人都很好;)谢谢你的快速回复!所以可以肯定的是,javaloader会允许我使用JAXB吗?还有,什么是STaX2?@Jimmy-对javaLoader没有什么异议,但我认为JAXB已经内置了。您是否尝试过使用createObject(“java”)访问它的类?@Leigh-我完全愿意,但我不知道我在做什么。我在互联网上找不到直接用于coldfusion的东西。@Jimmy-STaX2()我用它来解析2-3GB XML,因为常规的面向DOM的解析器会杀死服务器。我从未使用过JAXB,但如果它意味着什么,您可以发布您的java代码片段,我们可以为您“翻译”它:)@Leigh-我现在检查了,它还没有加载到CF CLAPATH中@两者都有-您不必使用javaLoader,您可以将JAR放入Coldfusion的lib目录并直接访问它。@Jimmy(和@Zarko)-您提到您使用的是托管服务器。要使用CF中的java对象,您需要createObject(“java”)访问,某些主机出于安全原因禁用了该访问。因此,在进一步操作之前,您可能需要验证您是否具有必要的权限;)您可以在.cfm脚本中运行快速测试。如果您没有访问权限,则会出现以下异常:#str#