Было бы хорошо, если бы вы включили некоторый код, объясняющий вашу проблему.
JAXB 101 говорит, что вы должны размещать правильные аннотации, тогда вы можете правильно сериализовать и десериализовать.Вы должны правильно аннотировать свои классы с помощью @ XmlRootElement , @ XmlElement , @ XmlAttribute и т. Д.
Например:
@XmlRootElement(name="student")
@XmlAccessorType(XmlAccessType.NONE)
class Student {
@XmlElement(name="name")
private String name;
@XmlElement(name="age")
private int age;
public Student() {
}
public String getName() { return name; }
public int getAge() { return age; }
}
Затем вы можете использовать его для сериализации, используя JAXB Marshaller :
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(Student.class);
Marshaller m = context.createMarshaller();
m.marshal(student, writer);
И десериализовать его также с помощью Unmarshelling на входе.
JAXBContext context = JAXBContext.newInstance(Student.class);
Unmarshaller m = context.createUnmarshaller();
return (Student)m.unmarshal(new StringReader(input));
Убедитесь, что вы смотрите на упомянутый выше JavaDoc, поскольку для этого есть много способов.
Если вы не можете изменять свои классы, вы все равно можете использовать JAXB (или вы можете использовать XStream).Класс следующий:
class Student {
private String name;
private int age;
public Student() {
}
public void setName(String name) { this.name = name; }
public String getName() { return name; }
public void setAge(int age) { this.age = age; }
public int getAge() { return age; }
}
Вы можете сериализовать его, выполнив:
Student student = new Student();
student.setAge(25);
student.setName('FooBar');
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(Student.class);
Marshaller m = context.createMarshaller();
m.marshal(new JAXBElement(new QName(Student.class.getSimpleName()), Student.class, student), writer);
System.out.println(writer.toString());
Если вы используете XStream , вы можете выполнить сериализацию без аннотаций тоже(и это более управляемо).http://x -stream.github.io / tutorial.html