2016-03-06 39 views
1

我使用杰克逊2.5.2和我有一个map<String,String>杰克逊XML序列化映射该键包含空格

默认情况下,杰克逊将其序列为:

<MyObject> 
<map> 
    <key1>value1</key1> 
    <key2 containing spaces>value2</key2 containing spaces> 
<map> 
</MyObject> 

,但我希望有一个通用的XML标签:

<MyObject> 
<map> 
    <entry key="key1">value1</entry> 
    <entry key="key2 containing spaces">value2</entry> 
<map> 
</MyObject> 
这样我的XML标签是通用的,可以用XSD验证

这里是我的测试

class MyObject { 
    Map map = new HashMap(); 
    public Map getMap() { return map;} 
} 
// Test 
ObjectMapper xmlMapper = new XmlMapper(); 
MyObject myObject = new MyObject(); 
myObject.getMap().put("key1","value1"); 
myObject.getMap().put("key2 containing spaces","value2"); 
System.out.println(xmlMapper.writeValueAsString(myObject)); 

是否有任何配置告诉杰克逊序列化通用XML?

回答

0

你可能想为这个问题提交一个错误报告:对于属性名称所做的事情是用别的东西替换冒犯的字符(如空格)(或剥离它们)。但是存在将名称可靠地转换回来的问题;如果属性足够简单(只是映射修改/删除的名称),但对于映射,它可能会也可能不会。