2016-01-06 22 views
2

有人可以指導我使用Jaxb2Marshaller生成帶有特殊字符的XML '&','<','>'?我在StackOverflow上有幾個指針可以在spring配置文件中使用下面的代碼片段,但是同樣沒有效果&我繼續分別收到'& amp','& lt','& gt'。任何指針都會非常有幫助。如何顯示通過Jaxb2Marshaller生成的XML裏面的'&'

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
<property name="marshallerProperties"> 
    <map> 
     <entry key="jaxb.encoding"> 
      <value>UTF-8</value> 
     </entry> 
    </map> 

+0

您能否提供生成值和期望值的示例? –

+0

生成的值:測試&值;期望值:測試和值

回答

0

& <>可能不會顯示有效的XML內。它們必須更改爲命名實體(& < >)或存在於CDATA塊內。您提供的示例

<name> Test & Value </name> 

無效的XML! 它必須是

<name> Test &amp; Value </name> 
or 
<name><![CDATA[Test & Value]]</name> 

這回答https://stackoverflow.com/a/4438368/1849837表明,你可以將EclipseLink JAXB(莫西)。它有註解@XmlCDATA,你可以添加到你的元素。

+0

謝謝Bartosz!我嘗試通過CDATA使用下面的類(作爲Jaxb2Marshaller的一個適配器),但它返回CDATA中的編碼數據(&);怎麼可以逃脫?:'public class StringCustomAdapter extends XmlAdapter {public String unmarshal(String fieldValue )throws Exception {return fieldValue;} public String marshal(String fieldValue)throws Exception {fieldValue = StringEscapeUtils.unescapeXml(「<![CDATA [」+ fieldValue +「]]>」); return fieldValue;}} –

相關問題