我有一個結構類似這樣的XML文件:解析XML的深層嵌套數據
<element1>
<element2>
<element3>
<elementIAmInterestedIn attribute="data">
<element4>
<element5>
<element6>
<otherElementIAmInterestedIn>
<data1>text1</data1>
<data2>text2</data2>
<data3>text3</data3>
</otherElementIAmInterestedIn>
</element6>
</element5>
</element4>
</elementIAmInterestedIn>
<elementIAmInterestedIn attribute="data">
<element4>
<element5>
<element6>
<otherElementIAmInterestedIn>
<data1>text1</data1>
<data2>text2</data2>
<data3>text3</data3>
</otherElementIAmInterestedIn>
</element6>
</element5>
</element4>
</elementIAmInterestedIn>
<elementIAmInterestedIn attribute="data">
<element4>
<element5>
<element6>
<otherElementIAmInterestedIn>
<data1>text1</data1>
<data2>text2</data2>
<data3>text3</data3>
</otherElementIAmInterestedIn>
</element6>
</element5>
</element4>
</elementIAmInterestedIn>
</element3>
</element2>
</element1>
正如你所看到的,我感興趣的兩個元素,深深嵌套在根目錄中,其第一元素,第二個元素深深地嵌套在第一個元素中。文檔中有多個(同胞)elementInmInterestedIn和otherElementIAmInterestedIn元素。
我想用Java解析這個XML文件,並將來自所有元素的所有元素(包括元素)的數據放入數據結構或Java對象中 - 只要它是有組織的並且我可以稍後訪問它。
我能夠編寫一個遞歸的DOM解析器方法,該方法對XML進行深度優先遍歷,以便觸及每個元素。我還編寫了一個帶有代表elementInmInterestedIn的JAXB註釋的Java類。然後,在遞歸方法中,我可以檢查何時到達元素ImInterestedIn並將其解組爲JAXB類的實例。這工作正常,除了這樣一個對象還應該包含多個otherElementIAmInterestedIn。
這是我卡住的地方。如何從其他ElementlemInterestedIn中獲取數據並將其分配給JAXB對象?我看過@XmlWrapper註解,但這似乎只適用於一層嵌套。另外,我不能使用@XmlPath。
也許我應該抓住這個想法,並採用一種全新的方法。我真的剛剛開始使用XML解析,所以也許我忽略了一個更明顯的解決方案。你將如何解析這樣的XML文檔並以有組織的方式存儲數據?
有用於遍歷/查詢XML XPath標準。我沒有用過,所以我不能確保任何東西,但我會說這可能是一個好主意使用谷歌搜索 – SJuan76
你想讓你的Java模型看起來像什麼?你是否還需要支持將對象寫回XML? –
我想理想的是有一個類表示elementIAmInterestedIn,具有屬性和任何直接子元素的私有變量。我想我可以爲此使用JAXB。但其中一個私有變量必須是另一個表示otherElementIAmInterestedIn的類的實例列表。 我不需要支持將對象寫回XML。 – user1015721