我使用標準的JAXB API來處理XML。我需要編組,然後解組一個對象(所以結果應該是同一個對象)。我首先編入一個字符串,然後做相反的事情 - 從字符串解組成一個對象。僅限JAXB XML編組對象,但解組需要完整結構?
問題是Marshaller.marshal(obj,os)給我的子只有(以XML包含)。當我嘗試解組時,我會收到有關缺少預期的父代碼的錯誤。
E.g. (1)整理String對象 「FieldSet中」:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FIELD1>field1</FIELD1>
<FIELD2>field2</FIELD2>
(2)嘗試這個XML字符串解組成 「FieldSet中」 對象:
javax.xml.bind.UnmarshalException:標籤名稱「FIELD1」是不允許的。可能的標記名稱爲: - 鏈接的例外: [com.sun.msv.verifier.ValidityViolation:標記名稱「FIELD1」不允許。可能的標記名稱爲:「Parent」]
在架構中,「Parent」是應位於「FieldSet」之前的頂級元素。
爲什麼這些標準JAXB操作不是對稱的,我需要做些什麼來同步它們並避免僅子女/缺少父母問題?謝謝。
我無權訪問JAXB類,它們是自動生成的。我只使用對象。我應該註釋我的實例嗎? – 2012-01-18 16:12:44
@geneb如果你不想註釋你的實例,你可以使用'JAXBElement'方法。 – 2012-01-18 16:15:00
當我嘗試用JAXBElement封裝對象時,發生以下異常: javax.xml.bind.MarshalException:marshal()的對象參數不可編組 – 2012-01-18 16:27:58