【发布时间】:2017-03-22 01:02:58
【问题描述】:
我有一个包含任何元素的 jaxb 类:
@XmlAnyElement(lax = true)
protected List<Object> any;
我想以编程方式向其中添加 DOM 节点,然后将其编组为 XML。基本上,我尝试的是创建一个节点,然后将其添加到任何列表中:
QName qn = new QName(...);
DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
doc = f.newDocumentBuilder().newDocument();
Node node = doc.createElementNS(qn.getNamespaceURI(), qn.getLocalPart());
myJaxbClass.getAny().add(node);
然后我进行编组:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.newDocument();
// Marshal the Object to a Document
JAXBContext jc2 = JAXBContext.newInstance(BookEntry.class);
Marshaller marshaller = jc2.createMarshaller();
marshaller.marshal(book, document);
将整个 Jaxb 类编组回 xml 失败并出现异常:
com.sun.istack.SAXException2:无法将类型“MyApp.MyJaxBClass.BookEntry”编组为元素,因为它缺少@XmlRootElement 注释]
如何以编程方式正确地将节点添加到任何列表?
【问题讨论】: