Preciso de ajuda a criar uma classe que aceite duas classes "irmas" ao introduzir dados em XML

Estou a trabalhar com web service e tenho duas classes semelhantes ClienteFeminino e ClienteMasculino que têm atributos diferentes mas herdaram as duas atributos da mesma classe pai Pessoas.

Precisava de uma classe que ao introduzir dados em XML aceitasse tanto a classe ClienteFeminino como ClienteMasculino e depois um método que me ajudasse a perceber que tipo de cliente, se feminino ou masculino, eu acabei de introduzir só q nao estou a conseguir, agradecia alguma ajuda, obrigado

Como é esse xml?

Tipo isto, estou a usar o postman

<pessoa>
	<nif>123321129</nif>
	<nome>Raul</nome>
	<data_nascimento>
		<dia>7</dia>
		<mes>1</mes>
		<ano>1999</ano>
	</data_nascimento>
</pessoa>

Nesta linha é onde devia inserir o nome da classe que devia aceitar as classes filho q mencionei
public ResponseEntity addCliente(@RequestBody ??? ???)

Como que vc identifica que esse xml é uma pessoa ClienteFeminino ou ClienteMasculino?

Isto seria um XML para ClienteFeminino uma vez que tem um atributo a mais que o ClienteMasculino q é a anca:

<cliente>
        <nif>123321129</nif>
        <nome>Sandra</nome>
        <data_nascimento>
            <dia>7</dia>
            <mes>1</mes>
            <ano>1999</ano>
        </data_nascimento>
    <numero>23</numero>
    <altura>170</altura>
    <peso>78</peso>
    <anca>60</anca>
    <cintura>70</cintura>
    <pescoço>20</pescoço>
</cliente>

Para ClienteMaculino seria o mesmo mas sem a linha referente à anca. Acho q também é importante referir que tenho outra classe que herdou os mesmos atributos da classe pai que estas duas classes que é a classe Funcionários.

E como vc está fazendo essa conversão?

Por exemplo para funcionário fiz assim:

public class Mapper {

	public static Data dataDTO2data(DataDTO dataDTO) throws NullPointerException {
		Data data = null;
		data = new Data(dataDTO.getDia(), dataDTO.getMes(), dataDTO.getAno());
		
		return data;
	}
	
	public static Funcionario funcionarioDTO2Funcionario(FuncionarioDTO funcionarioDTO) throws NullPointerException {
		Funcionario funcionario = null;
		Data data = dataDTO2data(funcionarioDTO.getNascimento());
		funcionario = new Funcionario(funcionarioDTO.getNif(), funcionarioDTO.getNome(), data, funcionarioDTO.getNumeroFuncionario(), funcionarioDTO.getModalidade());
		
		return funcionario;
	}
}