Skip to main content

How do i write objects that i have no control over in jaxb?



I am trying to find a way to marshall classes that i have no access to. I am trying to achieve something like this:







@XmlRootElement(name="bar")

class Bar {

@XmlAttribute

private Foo foo;



@XmlAttribute

private String baz;

}







which should result in a xml file like this:







<bar baz="stuff" foo="otherstuff"/>







Is this possible? I tried to fiddle with @XmlJavaTypeAdapter with no sucess.


Comments

  1. If you do not have access to the classes used to generate an XML file, but you do have access to the schema based on/used to generate those classes, you should be able to re-generate those classes using xjc and the schema definition (xsd) file.

    ReplyDelete
  2. You're on the right track with XmlJavaTypeAdapter, but I suspect foo needs to be an XmlElement rather than an XmlAttribute:

    @XmlRootElement(name="bar")
    public class Bar {

    @XmlElement
    @XmlJavaTypeAdapter(FooAdapter.class)
    private Foo foo;

    @XmlAttribute
    private String baz;

    }


    FooAdapter can be as simple as the following, but the output will be prettier if you make a proxy object to represent Foo and marshal that rather than Object[].

    class FooAdapter extends XmlAdapter<Object[], Foo> {

    @Override
    public Object[] marshal(Foo v) throws Exception {
    return new Object[]{ v.x, v.y, v.z };
    }

    @Override
    public Foo unmarshal(Object[] v) throws Exception {
    Foo foo = new Foo();
    foo.x = (String) v[0];
    foo.y = (Integer) v[1];
    foo.z = (Double) v[2];
    return foo;
    }

    }

    ReplyDelete

Post a Comment

Popular posts from this blog

Slow Android emulator

I have a 2.67 GHz Celeron processor, 1.21 GB of RAM on a x86 Windows XP Professional machine. My understanding is that the Android emulator should start fairly quickly on such a machine, but for me it does not. I have followed all instructions in setting up the IDE, SDKs, JDKs and such and have had some success in staring the emulator quickly but is very particulary. How can I, if possible, fix this problem?

CCNA 3 Final Exam => latest version

1 . Which security protocol or measure would provide the greatest protection for a wireless LAN? WPA2 cloaking SSIDs shared WEP key MAC address filtering   2 . Refer to the exhibit. All trunk links are operational and all VLANs are allowed on all trunk links. An ARP request is sent by computer 5. Which device or devices will receive this message? only computer 4 computer 3 and RTR-A computer 4 and RTR-A computer 1, computer 2, computer 4, and RTR-A computer 1, computer 2, computer 3, computer 4, and RTR-A all of the computers and the router   3 . Refer to the exhibit. Hosts A and B, connected to hub HB1, attempt to transmit a frame at the same time but a collision occurs. Which hosts will receive the collision jamming signal? only hosts A and B only hosts A, B, and C only hosts A, B, C, and D only hosts A, B, C, and E   4 . Refer to the exhibit. Router RA receives a packet with a source address of 192.168.1.65 and a destination address of 192.168.1.161...