2012-03-31 54 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