Here's the complete HTML translated to Spanish, with `lang="es"`, the ES link marked as active, and the title updated with `[ES]`: ```html
XmlObject.java@XmlRootElement de JAXB y la convención implícita de XStream (cualquier clase puede ser serializada). A diferencia de ellos, XmlStream requiere anotación explícita — las clases sin @XmlObject no serán procesadas ni por XmlObjectReader ni por XmlObjectWriter. Esto es una medida de seguridad: solo las clases explícitamente permitidas participan en la serialización.
alias()Sobrescribe el nombre del elemento raíz XML. Por defecto (cadena vacía), se usa el nombre completamente calificado de la clase: org.projectforge.business.user.PFUserDO → <org.projectforge.business.user.PFUserDO>. Con alias: @XmlObject(alias="user") → <user>. Los alias se registran en AliasMap (#758) durante la inicialización de XmlRegistry.
Diferencia con @XmlField(alias): @XmlObject.alias establece el nombre del elemento raíz (la etiqueta que envuelve todo el objeto), mientras que @XmlField.alias establece el nombre de un elemento hijo o atributo (un campo específico).
XmlRegistry al iniciar escanea el classpath (o configuración) y encuentra todas las clases anotadas con @XmlObjectAliasMap: Clase → alias y alias → ClaseXmlObjectReader.newInstance() al encontrar un elemento XML busca la clase correspondiente mediante AliasMap.getClassForAlias(tagName)BeanHelper.newInstance() y rellena recursivamente los campos (usando @XmlField)Status.IGNORE (#760)@XmlObject no es solo un alias — es un permiso explícito para la serialización. Una clase sin @XmlObject queda completamente excluida del proceso. XStream serializa cualquier clase por defecto — creando un riesgo de fuga accidental de datos (por ejemplo, serializar un proxy de Hibernate con contraseñas). XmlStream es más seguro pero requiere más trabajo manual de anotación.
| Anotación | Archivo | Rol |
|---|---|---|
@XmlField | #752 | Configurar la serialización del campo (nombre, tipo, valores predeterminados, formato) |
@XmlObject | #754 | Habilitar la clase para serialización con alias |
@XmlOmitField | #757 | Excluir un campo de la serialización por completo |
868d6abb7 2025 → 2026 (actualización de año de copyright) 63081666f Encabezados de archivos fuente: 2024→2025 b6092df09 Copyright 2023 → 2024 ab45d51fa Copyright 2001-2022 → 2001-2023 5f7ef41b8 Copyright 2021 → 2022 cd27dd997 paquete xstream → xmlstream ceb63e8a1 Encabezado de código fuente: (C) 2001-2021 7c79f1922 Copyright del encabezado fuente → 2020 32f634b88 Optimizar importaciones dd5ca38ac Copyright de todos los encabezados de archivos java actualizado o creado 9ebb88522 Commit inicial
alias) y no ha cambiado desde el commit inicial más allá de las actualizaciones de copyright y el cambio de nombre del paquete xstream → xmlstream. La simplicidad es intencional — esto es una puerta de permisos, no una superficie de configuración.