gpt4 book ai didi

java - Jackson XmlMapper 在将 XML 写入文件时强制使用小写标记名称

转载 作者:行者123 更新时间:2023-12-02 12:11:35 27 4
gpt4 key购买 nike

我在尝试使用 XmlMapper 从 POJO 写入 XML 文件时遇到问题。即使我使用的是 JacksonXmlProperty(localname ="UPPERCASE"),XmlMapper 也会强制使用小写标签名称

这是我映射的 POJOS 的代码

项目 XML:

data class ItemXML(
@JacksonXmlProperty(localName = "ITEMTYPE") val itemType: String,
@JacksonXmlProperty(localName = "ITEMID") val itemId: String,
@JacksonXmlProperty(localName = "QTY") val qty: Int,
@JacksonXmlProperty(localName = "COLOR") val color: Int,
@JacksonXmlProperty(localName = "EXTRA") val extra: String,
@JacksonXmlProperty(localName = "ALTERNATE") val alternate: String,
@JacksonXmlProperty(localName = "MATCHID") val matchId: Int,
@JacksonXmlProperty(localName = "COUNTERPART") val counterpart: String
)

库存XML
@JacksonXmlRootElement(localName = "INVENTORY")
data class InventoryXML(
@JacksonXmlProperty(localName = "ITEM")
@JacksonXmlElementWrapper(useWrapping = false)
val item: List<ItemXML>
)

以下是将 XML 写入放置在 OnCreate() 方法中的文件的代码:
inventoryXml = xmlMapper.readValue(data, InventoryXML::class.java)

pathFile = filesDir.absolutePath + "/inventory.xml"

xmlMapper.writeValue(File(pathFile), inventoryXml)


这是已保存的文件(如您所见,只有 INVENTORY 标记已保存为大写)
<INVENTORY>
<item>
<alternate>N</alternate>
<color>0</color>
<counterpart>N</counterpart>
<extra>N</extra>
<itemid>old012</itemid>
<itemtype>M</itemtype>
<matchid>0</matchid>
<qty>1</qty>
</item>
<item>
<alternate>N</alternate>
<color>11</color>
<counterpart>N</counterpart>
<extra>N</extra>
<itemid>3430c02</itemid>
<itemtype>P</itemtype>
<matchid>0</matchid>
<qty>1</qty>
</item>
</INVENTORY>

这段代码有什么问题?我希望将标签保存为 JacksonXmlProperty 的 localName 属性中指定的内容。

最佳答案

重命名属性以遵循标准 Bean 命名约定,即 Camel 大小写,因为这是 Jackson 所期望的:

项目 XML:

data class ItemXML(
@JacksonXmlProperty(localName = "ITEMTYPE") val itemType: String,
@JacksonXmlProperty(localName = "ITEMID") val itemId: String,
@JacksonXmlProperty(localName = "QTY") val qty: Int,
@JacksonXmlProperty(localName = "COLOR") val color: Int,
@JacksonXmlProperty(localName = "EXTRA") val extra: String,
@JacksonXmlProperty(localName = "ALTERNATE") val alternate: String,
@JacksonXmlProperty(localName = "MATCHID") val matchId: Int,
@JacksonXmlProperty(localName = "COUNTERPART") val counterpart: String
)

库存XML

@JacksonXmlRootElement(localName = "INVENTORY")
data class InventoryXML(
@JacksonXmlProperty(localName = "ITEM")
@JacksonXmlElementWrapper(useWrapping = false)
val item: List<ItemXML>
)

关于java - Jackson XmlMapper 在将 XML 写入文件时强制使用小写标记名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61806963/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com