接上文,我的意思是,在一个类A前使用@XmlRootElement,在类B中创建A类对象,在类C中序列化该对象
时间: 2024-12-25 09:30:18 浏览: 13
如果你的场景是在`ClassB`中创建`ClassA`对象,并希望在`ClassC`中通过注解`@XmlRootElement`来序列化这个对象,可以按照以下步骤操作:
1. **添加XML根元素注解**:首先在`ClassA`中声明`@XmlRootElement`,指定一个合适的名称,这将告诉JAXB在生成的XML中如何表示这个对象:
```java
@XmlRootElement(name = "rootElementName") // 替换为实际的XML元素名
public class ClassA {
// 类的其他字段和方法
}
```
2. **在`ClassB`中创建对象**:
```java
public class ClassB {
public void createAndStoreAObject() {
ClassA aObject = new ClassA();
// 设置aObject的属性...
// 然后存储aObject,比如存到List中
List<ClassA> objectsToSerialize = new ArrayList<>();
objectsToSerialize.add(aObject);
}
}
```
3. **在`ClassC`中序列化**:
```java
public class ClassC {
public void serializeObjects(List<ClassA> objects) {
try {
JAXBContext jaxbContext = JAXBContext.newInstance(ClassA.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 格式化输出
for (ClassA obj : objects) {
JAXBElement<ClassA> element = new JAXBElement<>("rootElementName", ClassA.class, obj); // 使用@XmlElementName指定根元素
JAXBElement<?> root = new JAXBElement<>(element, String.class, "");
marshaller.marshal(root, System.out); // 输出到控制台或写入文件
}
} catch (JAXBException e) {
throw new RuntimeException("Error serializing object", e);
}
}
}
```
现在`ClassC`的`serializeObjects`方法会遍历`ClassB`中创建的`ClassA`对象列表,并对其进行序列化。
阅读全文