2012-03-31 57 views
1

我有一个拥有10个属性的java对象。 3-4个属性来自XML文件。用Java解析一个大的XML文件

该XML有一个包含100-150个属性的元素。 所以我需要解析我的整个XML文件(我没有这个XSD)并找出3-4个属性并检索它们的值。

我需要关于使用哪种技术的建议,特别是JAXB是否适用于我的情况? 任何帮助表示赞赏。

+0

形容词“大”与问题有关吗?如果是这样,我们需要知道有多大。对于有些人来说2Mb很大,其他的则是20Gb。你说XML“有一个具有100-150个属性的元素”。这是不明确的。这可能意味着XML仅包含一个元素,并且该元素具有100-150个属性。或者这可能意味着XML有许多元素,其中之一具有100-150个属性。这种区别可能会对答案产生重大影响。 – 2012-03-31 09:38:50

+0

检查[JAXB是否可以解析大块XML文件](http://stackoverflow.com/questions/1134189)和[JAXB FAQ:处理大型文档](http://jaxb.java.net/guide/Dealing_with_large_documents。 HTML)。 – 2012-03-31 13:20:04

+0

@Michael:我的文件是1 MB。该文件是关于单个设备的配置。它包含一些数字协议的描述。每个协议都有2-3个字段。我对2或3协议的值感兴趣。 – user892871 2012-03-31 18:30:14

回答

2

JAXB (JSR-222)工作在这个用例:

我有10个属性的Java对象。来自XML文件的3-4个属性来自 。

当使用JAXB将少于一半的对象映射到XML时,我推荐使用@XmlAccessorType(XmlAccessType.NONE)。这告诉JAXB只有显式注释的属性映射到XML。

的XML已经与100-150的一个元件在它的属性。所以我需要 解析我的整个XML文件(我没有这个XSD)并找出属性并检索它们的值。

JAXB实现将使用StAX或SAX解析器来处理XML文档。这些解析器非常高效,不需要太多内存。

+0

谢谢您的输入。我是新手,我不明白为什么我们需要解析器来处理XML文档?不能让Jax-B的解组方法为我做这件事吗? – user892871 2012-03-31 23:19:00

+0

@ user892871 - 您只需要JAXB。我的意思是,JAXB(JSR-222)实现将使用较低级别的分析器来有效地处理任何大小的XML文档。 – 2012-04-01 00:10:02

+0

谢谢布莱斯。 – user892871 2012-04-03 02:36:06