StAXON - 当 autoPrimitive 为 true 时强制特定值为字符串

StAXON - Force specific value to be String when autoPrimitive is true

当使用 StAXON 将 XML 有效载荷转换为 JSON 时,是否可以标记特定节点,以便在转换时它们不遵守 autoPrimitive(true) 属性?

我有一些 XML:

<root>
    <foo>1234</foo> <!-- foo should always be String -->
    <bar>5678</bar> <!-- bar should always be Integer -->
</root>

并且我希望它被转换成下面的形式JSON:

{
    "foo": "1234", // Note: this value is a String
    "bar": 5678 // autoPrimitive setting has caused a type conversion
}

我知道我可以在处理数组时使用 XML 处理指令 <? xml-multiple myNode ?>,所以有没有类似的东西可以用来确保 XML 中的某些节点是不会自动转换为各自的原始类型?我遇到的问题是 foobar 由于它们的值而被转换为数字。

作为参考,我正在尝试使用 WSO2 的 ESB 4.9.0,它在处理 XML -> JSON 和 JSON -> 时使用 StAXON 库XML 转换。

如果以这种方式转换节点,则无法标记每个节点。您可以通过以下设置全局禁用 autoPrimitives,

打开ESB_HOME/repository/conf/synapse.properties,然后设置

synapse.commons.json.json.output.autoPrimitive=false