我有一个大的XML文件和几个POJO clasess需要读取这个XML.当我尝试用一个POJO读取测试文件时我使用这个:
JAXBContext jaxbContext = JAXBContext.newInstance(Test.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Test ts = (Test)jaxbUnmarshaller.unmarshal(file);
System.out.println(ts.getName());
Run Code Online (Sandbox Code Playgroud)
但是当我有30个POJO时,我会做什么?创建这4行30次?给我建议.
UPDATE
我如何理解这个例子http://blog.bdoughan.com/2010/08/using-xmlanyelement-to-build-generic.html 使用几个POGO我将使用
JAXBContext.newInstance("message:customer:product:order");
Run Code Online (Sandbox Code Playgroud)
在这个考试中,autor有3个咒语,但只有两个有an @XmlRootElement注释.为什么?
您可以使用所有30个POJO创建JAXBContext.您还可以将它们的名称存储在包中的jaxb.index索引文件中,并创建JAXBContext.newInstance("your.package")
以下是javadoc中 jaxb.index的一些细节
除了在上下文路径中列出之外,程序员带注释的JAXB映射类可以在jaxb.index资源文件中列出,格式如下所述.请注意,java包可以包含模式派生类和用户注释的JAXB类.此外,java包可能包含必须处理的JAXB包注释.(参见JLS第3版,第7.4.1节"包注释").
您的类应使用@XmlRootElement或@XmlType注释进行注释.
您还可以使用scannotation框架找到所有注释为@XmlRootElement的类,并使用您拥有的所有JAXB POJO创建JAXBContext.
如果您有任何问题,请发表评论,我会更新答案.希望能帮助到你.
| 归档时间: |
|
| 查看次数: |
530 次 |
| 最近记录: |