2015-04-29 61 views
0

我的jaxb EclipseLink實現有問題。JAXB EclipseLink Moxy添加模板xml

假設我有以下實體...

@XmlRootElement(name = GenericConfigEntity.XML_ROOT_TAG) 
public class GenericConfigEntity { 

    private String name; 
    private String data; 
    private String version; 
    private String date; 
    private String template; 

    @XmlAttribute(name = GenericConfigEntity.XML_NAME) 
    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    @XmlElement(name = GenericConfigEntity.XML_DATA) 
    public String getData() { 
     return data; 
    } 

    public void setData(String data) { 
     this.data = data; 
    } 

    @XmlAttribute(name = GenericConfigEntity.XML_VERSION) 
    public String getVersion() { 
     return version; 
    } 

    public void setVersion(String version) { 
     this.version = version; 
    } 

    @XmlAttribute(name = GenericConfigEntity.XML_DATE) 
    public String getDate() { 
     return date; 
    } 

    public String getTemplate() { 
     return template; 
    } 

    public void setTemplate(String template) { 
     this.template = template; 
    } 

} 

字符串「模板」包含XML數據已經讓我們說成才這樣的(在我的現實背景下,是一個很大的,我不希望爲此創建實體)。

<Prozess name="xx" test="1"> 
    <Debug system="test" /> 
</Prozess> 

現在我的問題是,如果沒有對模板字符串成這樣的成才產生

<conf name="xx" version="x" datum="xx"> 
    <Prozess name="xx" test="1"> 
     <Debug system="test" /> 
    </Prozess> 
    <Data> 
     TextTextText 
    </Data> 
</conf> 

這是無解包模板中的變量,因爲編組過程結合的方式我受限於這種佈局。

另外@XmlValue沒有解決方案,因爲我得到一個異常「所有其他元素必須是屬性,因爲一個標記爲xmlvalue」。

回答

0

我還沒有使用過這個,但我估計你可以使用@XmlAnyElementDomHandler來實現這樣的映射。你可以在MOXy的主程序員here的博客中找到一個有用的例子。

我認爲您仍然需要確保模板字段中的XML內容至少有一個開始標記和一個結束標記,用於在(未)編組期間標識DOM元素。該標籤可能是您所要求的任意值。我猜你可能只是尋找出現在字符串中的第一個標籤,並嘗試將它與字符串的末尾進行匹配。

相關問題