You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Castor XML映射实现用户节点嵌套结构?

没问题,咱们一步步来调整你的Java模型和Castor映射文件,适配新的XML结构:

1. 修改Java模型类

首先要调整类结构,贴合新的XML层级:

重命名原Users类为User

原来的Users类对应现在单个用户的<User>节点,重命名后更符合语义:

package com.cetrea.securityservice.bean;

public class User {
    private String username;
    private String password;

    // Getters & Setters
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

创建新的Users容器类

这个类作为外层<Users>节点的对应类,用来包裹所有User对象的列表:

package com.cetrea.securityservice.bean;

import java.util.List;

public class Users {
    private List<User> userList;

    // Getter & Setter
    public List<User> getUserList() {
        return userList;
    }

    public void setUserList(List<User> userList) {
        this.userList = userList;
    }
}

更新Configurations类

把原来的List<Users>字段替换为单个Users对象,对应XML中唯一的外层<Users>节点:

package com.cetrea.securityservice.bean;

public class Configurations {
    private int port;
    private boolean enableHttps;
    private String keyStorePath;
    private String keyPass;
    private int TTL;
    private Users users; // 替换原List<Users>为单个Users容器

    // Getters & Setters
    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public boolean isEnableHttps() {
        return enableHttps;
    }

    public void setEnableHttps(boolean enableHttps) {
        this.enableHttps = enableHttps;
    }

    public String getKeyStorePath() {
        return keyStorePath;
    }

    public void setKeyStorePath(String keyStorePath) {
        this.keyStorePath = keyStorePath;
    }

    public String getKeyPass() {
        return keyPass;
    }

    public void setKeyPass(String keyPass) {
        this.keyPass = keyPass;
    }

    public int getTTL() {
        return TTL;
    }

    public void setTTL(int TTL) {
        this.TTL = TTL;
    }

    public Users getUsers() {
        return users;
    }

    public void setUsers(Users users) {
        this.users = users;
    }
}

2. 修改Castor映射文件

现在调整映射配置,让Castor能正确解析新的XML结构:

<mapping>
  <class name="com.cetrea.securityservice.bean.Configurations" auto-complete="true">
    <map-to xml="Configurations"/>
    <field name="port" type="int">
      <bind-xml name="Port" node="element"/>
    </field>
    <field name="enableHttps" type="boolean">
      <bind-xml name="EnableHttps" node="element"/>
    </field>
    <field name="keyStorePath" type="string">
      <bind-xml name="KeyStorePath" node="element"/>
    </field>
    <field name="keyPass" type="string">
      <bind-xml name="KeyPass" node="element"/>
    </field>
    <field name="TTL" type="int">
      <bind-xml name="TokenTtlMillis" node="element"/>
    </field>
    <!-- 映射到新的Users容器类,对应外层<Users>节点 -->
    <field name="users" type="com.cetrea.securityservice.bean.Users">
      <bind-xml name="Users" node="element"/>
    </field>
  </class>

  <!-- 配置Users容器类的映射,解析内部的<User>节点列表 -->
  <class name="com.cetrea.securityservice.bean.Users" auto-complete="true">
    <map-to xml="Users"/>
    <field name="userList" collection="arraylist" type="com.cetrea.securityservice.bean.User">
      <bind-xml name="User" node="element"/>
    </field>
  </class>

  <!-- 配置单个User类的映射,对应<User>节点 -->
  <class name="com.cetrea.securityservice.bean.User" auto-complete="true">
    <map-to xml="User"/>
    <field name="username" type="string">
      <bind-xml name="Username" node="element"/>
    </field>
    <field name="password" type="string">
      <bind-xml name="Password" node="element"/>
    </field>
  </class>
</mapping>

关键修改说明

  • 原Users类的职责拆分:现在User对应单个用户节点,Users作为容器包裹多个用户,完美匹配新XML的<Users> -> <User>层级。
  • Configurations中的字段从列表改为单个容器对象,对应XML中唯一的外层<Users>节点。
  • 映射文件中给Users类的userList字段配置collection="arraylist",绑定到<User>节点,Castor会自动把所有<User>节点解析为User对象的列表。

内容的提问来源于stack exchange,提问作者Mike Nor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:22:53