如果我使用Camel unmarshal和XmlJsonDataFormat
将JSON转换为具有默认命名空间的XML,则所有打开的xml元素在末尾都有一个空格。我没有发现影响这种行为的可能性。
这是转换后的XML:
<Message xmlns="http://example.com/Message/1">
<Header >
<Header1 >header 1</Header1>
<Header2 >header 2</Header2>
</Header>
</Message>
这是我的路线定义:
public void configure() throws Exception {
// create JSON to XML data format
XmlJsonDataFormat json2XmlFormat = new XmlJsonDataFormat();
json2XmlFormat.setEncoding("UTF-8");
json2XmlFormat.setRootName("Message");
List<XmlJsonDataFormat.NamespacesPerElementMapping> namespaces = new ArrayList<XmlJsonDataFormat.NamespacesPerElementMapping>();
namespaces.add(new XmlJsonDataFormat.NamespacesPerElementMapping("Message", "||http://example.com/Message/1|"));
json2XmlFormat.setNamespaceMappings(namespaces);
from("direct:input")
.unmarshal(json2XmlFormat)
.log("${body}");
}
转换的XML对空格仍然有效。但是我希望有一个解决方案。
setSkipWhitespace()
和setTrimSpaces()
仅适用于XML到JSON
有什么想法吗?
答案 0 :(得分:1)
如果在没有|
字符的情况下定义名称空间(这相当于没有名称空间),我得到了标签中没有空格的结果:
namespaces.add(new XmlJsonDataFormat.NamespacesPerElementMapping("Message", "http://example.com/Message/1"));
或者,如果定义了名称空间的正确别名,例如ns
:
namespaces.add(new XmlJsonDataFormat.NamespacesPerElementMapping("Message", "|ns|http://example.com/Message/1|"));