JAXB 解组神秘的 XML

Jos*_*osh 2 java xml jaxb

我正在使用 JAXB 来解组 XML 文件。

关于 XML 文件,我所知道的只是它是有效的 XML。

那么我应该如何为 newInstance 指定一个类和/或包呢?

JAXBContext jaxbContext = JAXBContext.newInstance(??????);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Object o = (Object) unmarshaller.unmarshal(myFile);
Run Code Online (Sandbox Code Playgroud)

我在文档中没有看到任何解决此问题的内容。

Chr*_*haw 5

您需要告诉 JaxB 将解组到哪个类,以便它可以使用类中的注释来解析 xml 的层次结构。您将需要一个类,该类也用 @XmlRootElement 之类的内容进行注释。如果您想解析任意 xml,您可能需要使用 DocumentBuilder 或 xpath 执行某些操作。

请参阅这篇文章了解更多信息。

http://blog.bdoughan.com/2012/11/creating-generic-list-wrapper-in-jaxb.html

我已经使用类似的方法将任意 xml 转换为类。Any 字段实际上是 org.w3c.dom.Element 的列表,您可以从中获取信息。

http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/Element.html

@XmlRootElement
class Wrapper {
        /**
         * Everything else
         */
        @Transient
        @XmlAnyElement(lax = true)
        private List<Element> any;


        public List<Element> getAny() {
            return any;
        }

}
Run Code Online (Sandbox Code Playgroud)