我有一个XML文件,其中包含一个包含特殊字符或转义字符的元素。当我将此文件解组为Java对象时,JAXB会自动转义这些字符。但是我不希望它们被转义,并且应该使用XML文件中存在的任何值来填充对象。 我的XML文件的片段如下所示:
<Order>
<name>Order One ></name>
<price>50</price>
<Order>
我的JAXB Order类如下所示:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Order")
public class Order{
@XmlElement
private String name;
@XmlElement
private String price;
//skipping getter and setter for brevity
在解组时,Order类对象的名称字段的值为“Order one&gt;”而我希望它是“订单一>
”,因为这是要求。
我知道将此值放在CDATA中的解决方案,以便它不会被转义,但是我解组的XML文件来自外部源,我无法控制该文件。 我读到有关SO的解决方案,建议寻找'&amp;'并取代它。但该解决方案看起来并不通用,并不适用于所有场景。 Unmarshalling XML with JAXB without unescaping characters
我是JAXB世界的新手并试图找到我的脚。我之前尝试做的可能已经完成,但我还没有找到解决方案。 关于使用JAXB转义字符,SO上有几种可用的解决方案,但几乎所有关于编组的讨论。 任何帮助将不胜感激。
答案 0 :(得分:0)
您无法直接使用JAXB执行此操作。至少JAXB的MOXy和RI实现利用底层解析器来处理XML。当他们获得数据时,它已经被取消了。您应该寻找允许禁用unescaping的SAX或StAX解析器,并将其与JAXB一起使用以获取您正在寻找的行为。
或者你可以实现一个XmlAdapter
,它可以重新转义unmarshal上的字符,并将其转发给元帅。