将XML转换为Java对象的最佳方式是什么?将XML转换为Java对象
我不希望喜欢像表示法,但想从XML中提取某些数据并填充Java对象。我看了一下XStream,但并不喜欢整个“下移,上移”类型的东西。写转换器时,我宁愿像DOM模型...
将XML转换为Java对象的最佳方式是什么?将XML转换为Java对象
我不希望喜欢像表示法,但想从XML中提取某些数据并填充Java对象。我看了一下XStream,但并不喜欢整个“下移,上移”类型的东西。写转换器时,我宁愿像DOM模型...
我知道每个人都喜欢像JAXB和这样的自动解决方案,但我建议你手工编码javax.xml.bind.Marshaller
和javax.xml.bind.Unmarshaller
实现,达到您想要的东西而不必填满你的烫发根空间。使用JDOM解析XML并使用XPath将值映射到Java对象。做一次这将会是一些工作,但是你将会拥有你所需要的,而不是更多。
访问Apache沼气池
我不能完全肯定,如果这是你在找什么,但你可以使用像XMLBeans将XML绑定到Java对象。我必须在以前的雇主中使用它。不幸的是,这是一个现有的系统,我只需要操作这些对象,而不必生成包含它们的库。另外,我不确定如果没有XSD,它的工作效果如何(您没有提及是否有XSD)。
如果你有一个XML模式,JAXB很好 - 作为JDK的一部分。通过运行例如Java生成Java类xjc -p foo myschema.xsd
读取XML文件,并返回一个对象(从由XJC工具生成的类):
JAXBContext context = JAXBContext.newInstance(FooObj.class);
Unmarshaller unMarshaller = context.createUnmarshaller();
FooObj param = (FooObj) unMarshaller.unmarshal(new FileInputStream("Foo.xml"));
你可以做类似的事情,如果你只想要一个XML文档的一部分转换为对象,你应该例如能够为JAXB提供DOM文档的一部分,而不是像上面那样完成整个文件。
+1 - 从Java类启动时,您还可以使用JAXB(JSR-222)实现。您只需在希望XML表示与默认值不同的地方添加注释即可:http://blog.bdoughan.com/2012/07/jaxb-no-annotations-required.html – 2012-12-05 11:28:04
您可以使用Castor将XML方便地转换为Java并返回。
Castor数据,你可以
Castor映射文件非常简单且直观: *只有当它是xml属性时才能将值作为构造函数参数传递(不支持元素作为构造函数参数) *不能直接写入私有字段 所以如果您在DDD方法中实现了域(no取而代之的是setter和构造函数)并输入xml存储信息作为元素,所以没有办法使用castor – 2011-09-29 12:08:53
JAXB是将对象转换为XML的最佳方式,而MOXy是最好的JAXB实现。
莫西提供以下扩展名:
我想从XML到对象的另一种方式。另外我的XML文档非常大,我只想将一小部分数据解析到我的对象中。 – 2010-07-20 23:58:55
JAXB/MOXy还支持XML到对象。你只需要映射你想要的其他内容将被忽略。基于MOXy的基于XPath的映射可以帮助您保留一个小对象模型。请参阅http://bdoughan.blogspot.com/2010/07/xpath-based-mapping.html – 2010-07-21 13:07:42
西河看起来很好的唯一的事情是,我宁愿用JDOM实现HierarchicalStreamReader的工作....我想我可以投,但这个好像有点怪怪的....有一种使用转换器但使用JDOM阅读器的方法? – 2010-07-18 16:16:07