2010-07-01 3 views
3

Je suis très nouveau à ce sujet, alors allez-y doucement sur moi. D'après ce que je comprends, JAXB permet au programmeur d'utiliser des classes Java pour écrire du XML, et il prend soin de créer la structure XML appropriée en lisant XSDs. De cette façon, lorsque le schéma change, le programmeur ne doit pas revenir en arrière et réécrire un tas de code XML codé en dur car JAXB traduit automatiquement les classes Java en XML en fonction du schéma le plus courant. Est-ce vrai?jaxb ou équivalent pour Coldfusion

Existe-t-il un équivalent de JAXB pour ColdFusion ou fonctionnerait-il avec ColdFusion? Est-ce que CF l'a intégré?

Si je suis loin de la base, faites le moi savoir.

Merci d'avance.

+2

Bien qu'il ne nous aide pas beaucoup - ne savez que vous pouvez exécuter des méthodes Java assez facilement dans ColdFusion. Instanciez juste les objets w/createObject, et vous pouvez exécuter toutes les méthodes que vous voulez sur em (normalement). –

+0

Vous avez besoin de smiley à la fin de la première phrase. Non, vraiment, un gros: D. La communauté des FC est la plus gentille, la plus polie, la plus amicale ... ET OUI la communauté la plus belle de cette partie de la Voie Lactée. Nous sommes toujours facile sur tout le monde;) –

Répondre

3

Si vous êtes si fonds de JAXB, vous pouvez facilement utiliser JavaLoader (jamais eu de problèmes avec elle, il est prêt pour l'entreprise http://javaloader.riaforge.org/) et utilisez votre lib presque la même chose. Ok il peut arriver que vous avez à faire soemthing « stupide » comme ceci:

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

Mais je suppose que cela est beaucoup mieux que de perdre du temps déterminer une nouvelle bibliothèque.

est ici par exemple comment utiliser STaX2 pour analyser les fichiers XML huuge:

<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> 
+0

Merci pour la réponse rapide! Donc, pour être sûr, javaloader me permettra d'utiliser JAXB? et aussi, qu'est ce que STaX2? – Jimmy

+0

@Jimmy - Rien contre le JavaLoader, mais je pensais que JAXB était déjà intégré. Avez-vous essayé d'accéder à ses classes en utilisant createObject ("java", ..)? – Leigh

+0

@Leigh - Je le ferais totalement, mais je n'ai aucune idée de ce que je fais. J'ai du mal à trouver quelque chose de simple pour coldfusion sur internet. – Jimmy