我必須處理大型XML文檔,這些文檔通常會錯誤地處理缺少的屬性數據。而不是僅僅遺漏缺少數據的屬性,該屬性用空字符串值指定。這會導致解組時出現問題,因爲空字符串是的一個值。使用JAXB將空字符串解組爲空的正確方法
例如,應該是什麼
<SOME_ELEMENT attr1="someValue"/>
反而
<SOME_ELEMENT attr1="someValue" attr2="" attr3=""/>
我試圖拿出適當地處理這個不好的XML的「正確」的方式。我們的目標是將屬性的值視爲空白字符串時省略,而空白字符串永遠不會是該屬性的有效值(例如整數)。
我目前使用XMLAdapters將這些空字符串轉換爲空(如建議in this post),但這似乎是錯誤的解決方案。我正在使用的文檔中的許多屬性已經使用了從其他代碼共享的類型適配器,並且似乎沒有爲屬性指定多個XMLAdapter的方法。
有沒有一種標準的方法來處理我剛剛錯過的這種類型的情況?
謝謝!
編輯
我在尋找,不需要我來編輯每個不同的JAXB的解決方案映射類,因爲有幾十個都具有相同的需求。理想情況下,這個問題的解決方案將允許我爲所有屬性指定一個通用策略,並根據需要允許特定的覆蓋。
你想要什麼樣的行爲?你想要綁定的欄值爲零或空或空字符串,或其他完全? –
2012-04-10 14:37:22
還有什麼問題http://stackoverflow.com/questions/5133250/jaxb-how-to-make-jaxb-not-to-unmarshal-empty-string-to-0?這是一個語義問題,而不是xml語法問題。 xml實際上是格式良好的。我這樣說是因爲這意味着它不會是一個優雅的技術解決方案,因爲它是一個業務邏輯問題。 – 2012-04-10 14:40:32