0
我正在開發一個JAVA項目,其中嚴格的XSD由第三方提供。 XSD包含以下結構:按照架構的要求在特定位置插入XML中的標記
<sequence>
<element name="element1" type="type1" nillable="true" minOccurs="0"/>
<element name="element2" type="type2" nillable="true" minOccurs="0"/>
<element name="element3" type="type3" nillable="true" minOccurs="0"/>
</sequence>
元素必須按照XSD的順序排列。但所有元素都不是強制性的,所以他們可以不在消息中。這裏的列表是簡化的,實際上更長。
如果我想檢查傳入消息中是否存在element3,並且它不存在,則應該採取什麼方法將其插入消息中的正確位置。我必須考慮缺少所有前面的元素,所以我不能依賴element2的存在,並在它後面插入標籤。例如:
<parent>
<element2/>
</parent>
應該成爲
<parent>
<element2/>
<element3/>
</parent>
我有唯一的解決方案是複雜的,我必須尋找前述元素3(從最近的)的所有元素的存在。如果找到前面的元素,我會在它後面插入。如果沒有找到,我插入父項。我需要將前面的元素存儲在某處(配置或硬編碼)。這似乎不是一個優雅的解決方案。
在Java中這樣做的最好方法是什麼?無論是在代碼中還是使用XSLT。
我也考慮過這一點,但我dont't知道xml的編組/解組將改變原始的xml。 XSD非常複雜。藉助XmlBeans,我最終可以完成140多個課程。似乎很多改變一個標籤:) – Alan 2010-12-21 15:12:17