Java:从 .xml 文件填充 .xsd-生成的 class
Java: Populating .xsd-generated class from .xml file
我有一个从 .xsd 文件生成的 class,我有一个 .xml 文件,其中包含符合 .xsd。类似于:
- XML 架构文件:
MyObject.xsd
- Java class 从模式生成:
MyObject.java
- XML 匹配模式:
MyObject.xml
有没有一种简单的方法可以将 MyObject.xml
反序列化为 MyObject.java
的实例?我希望有比手动遍历 DOM 元素并设置对象的所有属性更简单的方法。
基本上,我正在寻找 java.beans.XMLDecoder
中的功能,但由于我的 .xml 文件不是从 XMLEncoder
创建的,我不相信我可以使用解码器。
首先您需要使用静态 newInstance
方法创建一个 JAXBContext
实例。然后使用 createMarshaller
方法创建一个 Unmarshaller
实例,并在该实例上调用适当的 unmarshal
方法:
InputStream is = new FileInputStream("MyObject.xml");
JAXBContext jc = JAXBContext.newInstance(MyObject.class);
Unmarshaller u = jc.createUnmarshaller();
MyObject o = (MyObject)u.unmarshal(is);
我有一个从 .xsd 文件生成的 class,我有一个 .xml 文件,其中包含符合 .xsd。类似于:
- XML 架构文件:
MyObject.xsd
- Java class 从模式生成:
MyObject.java
- XML 匹配模式:
MyObject.xml
有没有一种简单的方法可以将 MyObject.xml
反序列化为 MyObject.java
的实例?我希望有比手动遍历 DOM 元素并设置对象的所有属性更简单的方法。
基本上,我正在寻找 java.beans.XMLDecoder
中的功能,但由于我的 .xml 文件不是从 XMLEncoder
创建的,我不相信我可以使用解码器。
首先您需要使用静态 newInstance
方法创建一个 JAXBContext
实例。然后使用 createMarshaller
方法创建一个 Unmarshaller
实例,并在该实例上调用适当的 unmarshal
方法:
InputStream is = new FileInputStream("MyObject.xml");
JAXBContext jc = JAXBContext.newInstance(MyObject.class);
Unmarshaller u = jc.createUnmarshaller();
MyObject o = (MyObject)u.unmarshal(is);