Does anyone here know how to get JAXB working with JRuby? I'm having
trouble with it. It keeps giving me a: "syntax error, unexpected
tIDENTIFIER (SyntaxError)"
The specific location its complaining about is the line where I use:
sgbc = (SomeGeneratedBindingClass) unmarshaller.unmarshal(file)
The tutorials I'm using for JAXB gave me this Java code:
JAXBContext context = JAXBContext.newInstance("net.some.package.name");
Unmarshaller unmarshaller = context.createUnmarshaller();
GeneratedBindingClass gbc = (GeneratedBindingClass)
unmarshaller.unmarshal(file);
xmlValueOfInterest = gbc.getXMLValueOfInterest();
so, it seemed reasonable to use the following Ruby/JRuby implementation
of JAXB:
context = JAXBContext.newInstance("net.some.package.name")
unmarshaller = context.createUnmarshaller()
gbc = (GeneratedBindingClass) unmarshaller.unmarshal(file)
xmlValueOfInterest = gbc.getXMLValueOfInterest()
puts xmlValueOfInterest
I've used "include Java" and java_import 'java.some.package' where
applicable... just can't seem to get the rest of the syntax right. Can
anybody spot what I'm missing?
Cheers,
Eric
on 2010-08-15 06:08
on 2010-08-15 06:21
in JRUBY you do not need to cast any objects. so just leave the cast '(GeneratedBindingClass)' away. that should help. regards Kristian On Sun, Aug 15, 2010 at 9:38 AM, Eric Schmitt <lists@ruby-forum.com> wrote: > JAXBContext context = JAXBContext.newInstance("net.some.package.name"); > gbc = (GeneratedBindingClass) unmarshaller.unmarshal(file) > Posted via http://www.ruby-forum.com/. > > --------------------------------------------------------------------- > To unsubscribe from this list, please visit: > > Â Â http://xircles.codehaus.org/manage_email > > > --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email
on 2010-08-16 05:39
Thanks Kristian... I think I'll just try and write the xml binding, using the JAXB binding libraries, in straight java. Then use a simple java class to access the attributes, that way I can just import the .jar and use some simple calls to a basic java class... maybe that'll get the job done. JRuby seems to be choking on some of the example code that I've been trying to implement. And I'm not savvy enough to figure out how write it differently. Anyhow, thanks again! Cheers, Eric
on 2010-08-16 20:59
Eric Schmitt wrote: > Thanks Kristian... I think I'll just try and write the xml binding, > using the JAXB binding libraries, in straight java. Then use a simple > java class to access the attributes, that way I can just import the .jar > and use some simple calls to a basic java class... maybe that'll get the > job done. JRuby seems to be choking on some of the example code that > I've been trying to implement. And I'm not savvy enough to figure out > how write it differently. Anyhow, thanks again! > > Cheers, > Eric Okay, Here's an update for anyone who's following in my footsteps... If you're using JRuby, it seems best practice to minimize your use of Java inline with Ruby. It can't handle things like casting and such, so don't even bother with it. I created a basic accessor class, and placed all the unmarshalling JAXB code in the constructor, and used it to initialize the variables that matched the tags in the xml document. Then in my JRuby code I just did the following: include Java require 'path/to/my/xml/binding/jar/file' import 'my.accessor.class.package.MyAccessorClass' ac = AccessorClass.new(java.io.File("path/to/xml/file")) # now you can output your xml values, or store in a database, etc.. puts ac.someAttribute Yes, its that easy folks! I was making it way harder than it needed to be. If anyone has any problems with this, don't hesitate to ask. I think I understand it pretty well now. Cheers, Eric
on 2010-08-16 21:03
Eric Schmitt wrote: > Eric Schmitt wrote: >> Thanks Kristian... I think I'll just try and write the xml binding, >> using the JAXB binding libraries, in straight java. Then use a simple >> java class to access the attributes, that way I can just import the .jar >> and use some simple calls to a basic java class... maybe that'll get the >> job done. JRuby seems to be choking on some of the example code that >> I've been trying to implement. And I'm not savvy enough to figure out >> how write it differently. Anyhow, thanks again! >> >> Cheers, >> Eric > > Okay, > > Here's an update for anyone who's following in my footsteps... If you're > using JRuby, it seems best practice to minimize your use of Java inline > with Ruby. It can't handle things like casting and such, so don't even > bother with it. I created a basic accessor class, and placed all the > unmarshalling JAXB code in the constructor, and used it to initialize > the variables that matched the tags in the xml document. Then in my > JRuby code I just did the following: > > include Java > require 'path/to/my/xml/binding/jar/file' > import 'my.accessor.class.package.MyAccessorClass' > > ac = AccessorClass.new(java.io.File("path/to/xml/file")) > # now you can output your xml values, or store in a database, etc.. > puts ac.someAttribute > > Yes, its that easy folks! I was making it way harder than it needed to > be. If anyone has any problems with this, don't hesitate to ask. I think > I understand it pretty well now. > > Cheers, > Eric Oops, caught a typo: include Java require 'path/to/my/xml/binding/jar/file' import 'my.accessor.class.package.MyAccessorClass' myac = MyAccessorClass.new(java.io.File("path/to/xml/file")) # now you can output your xml values, or store in a database, etc.. puts myac.someAttribute Now go enjoy a tasty beverage... :D
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.