java - 尝试使用 Castor 紧凑地序列化对象

标签 java xml xml-serialization marshalling castor

我正在使用 Castor 写出用户 ID 到时间间隔的映射。我正在使用它来保存和恢复一项冗长任务的进度,并且我正在尝试使 XML 尽可能紧凑。我的映射是从字符串用户 ID 到包含间隔时间戳的类,以及我不需要序列化的其他 transient 数据。

我能够使用嵌套类映射:

...
<field name="userIntervals" collection="map">
 <bind-xml name="u">
  <class name="org.exolab.castor.mapping.MapItem">
   <field name="key" type="string"><bind-xml name="n" node="attribute"/></field>
   <field name="value" type="my.package.TimeInterval"/>
  </class>
 </bind-xml>
</field>
...
<class name="my.package.TimeInterval">
 <map-to xml="ti"/>
 <field name="intervalStart" type="long"><bind-xml name="s" node="attribute"/></field>
 <field name="intervalEnd" type="long"><bind-xml name="e" node="attribute"/></field>
</class>
...

并得到如下所示的输出:

<u n="36164639"><value s="1292750896000" e="1292750896000"/></u>

我想要的是像这样的单个节点中用户的名称、开始和结束。

<u n="36164639" s="1292750896000" e="1292750896000"/>

但我似乎无法欺骗它,所以“值”中的开始和结束属性与“键”位于同一节点中。任何想法将不胜感激。

最佳答案

纳什, 我认为安排脚轮映射有点棘手。 如果你想拥有像

这样的结构
<u n="36164639" s="1292750896000" e="1292750896000"/> 

然后你需要创建一个新的 pojo 文件 所有三个字段 Key、intervalStart、intervalEnd。 并让文件名为 KeyTimeInterval 并像下面这样映射它。

 <field name="userIntervals" collection="map">    
  <class name="org.exolab.castor.mapping.MapItem">   
    <field name="u" type="my.package.KeyTimeInterval">
      <bind-xml name="u" node="element"/>
    </field>             
   </class>        
 </field>



<class name="my.package.KeyTimeInterval">  
  <field name="key" type="String">
        <bind-xml name="n" node="attribute"/></field> 
    <field name="intervalStart" type="long">
        <bind-xml name="s" node="attribute"/></field>   
     <field name="intervalEnd" type="long">
      <bind-xml name="e" node="attribute"/></field>   
 </class> 

关于java - 尝试使用 Castor 紧凑地序列化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5122473/

相关文章:

c# - XmlSerializer 不遵守默认命名空间?

java - Hibernate 4。无效映射异常。无法读取 XML。必须声明元素类型 hibernate-mapping

c# - 将 xmlns 属性添加到根元素

c++ - 无法构建简单的 Boost XML 序列化示例

java - fastxml jackson 使用 Pojo 创建嵌套 xml

c# - C# 中的 XML 序列化数组

c# - 从 .NET 3.5 更新到 .NET 4.6 后出现 XmlSerializer 错误

java - 将一行插入 ResultTableModel 以及数据库

java - 如何在 selenium 中使用 Ashot 对整个网页进行屏幕截图

java - 如何在另一个生成字节码类中使用匿名类实例