目标:试图通过参数c
传递任何类,所以任何类都可以直接使用编组。JAXB编组期间的类铸造
错误:[com.sun.istack.internal.SAXException2:不能编组类型“的java.lang.Class”作为元素,因为它缺少一个@XmlRootElement注释]
给出该错误在线指出用箭头( - >)
评论:如果我尝试在管线8 & 9用来自实际的类的表达来改变c
然后这个工作得很好。没有这样做有没有办法。我认为类别铸造是不行的。
public XmlMarshaller(Class c){
try {
JAXBContext jaxbContext = JAXBContext.newInstance(c);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
--> marshaller.marshal(c, new File("xmlDyna/asd.xml"));
--> marshaller.marshal(c, System.out);
} catch (JAXBException e) {
e.printStackTrace();
}
}
如果有人认为错误与缺少的@XmlRootElement注释一致,这是其他类。
@XmlRootElement(name = "Dynamic")
public class DynamicLoader {
@XmlElement(name = "name")
public String name = "asdasd";
public DynamicLoader(){
XmlMarshaller marshaller = new XmlMarshaller(this.getClass());
}
public String getName(){
return name;
}
为什么你想在你的xml中编组java.lang.Class? –
我没有试图编组lang.Class对象。我试图通过(Class c)作为参数传递另一个对象。问题在于符合( - >)而不是c,它必须是类的名称。你觉得我应该怎么做? – rjbaj