Here is the complete HTML translated into French, with the language set to `fr`, the FR link marked as active, and the title updated with `[FR]`. ```html
XmlField.java@XmlElement, @XmlAttribute de JAXB, @XStreamAlias et @XStreamAsAttribute de XStream, le tout combiné en une seule annotation. Marque un champ Java comme sérialisable en XML et contrôle exactement comment il est écrit. Appliquée au niveau du champ (@Target(FIELD)) et disponible à l'exécution via la réflexion (@Retention(RUNTIME)) — c'est ainsi que XmlObjectWriter et XmlObjectReader découvrent les champs sérialisables.
alias() — Nom de l'élément/attribut XMLRemplace le nom du champ lors de la sérialisation. Sans alias : private String firstName → balise <firstName>. Avec alias : @XmlField(alias="first-name") → balise <first-name>. Utile lorsque le format XML doit se conformer à un schéma externe ou lorsqu'un nom de champ Java entre en conflit avec un mot réservé XML.
asAttribute() et asElement() — Attribut vs élémentContrôle si la valeur est sérialisée en tant qu'attribut XML (compact) ou élément (structuré) :
<!-- En tant qu'attribut : --> <user id="42" name="John"/> <!-- En tant qu'élément : --> <user><id>42</id><name>John</name></user>
Nuance importante du Javadoc : "asAttribute=false n'a aucun effet (veuillez utiliser asElement=true à la place)" et vice versa. Cela signifie que false n'est pas une négation — c'est "laisser par défaut", ce qui peut être remplacé par les paramètres globaux dans XmlObjectWriter.asAttributeAsDefault(). Pour garantir la sérialisation en attribut, utilisez asAttribute=true. Pour garantir un élément, utilisez asElement=true.
defaultDoubleValue / defaultIntValue / defaultStringValue / defaultBooleanValue — Compression XMLSi la valeur du champ est égale à la valeur par défaut déclarée, elle n'est PAS sérialisée en XML. C'est un mécanisme de compression : les valeurs par défaut typiques n'occupent pas d'espace dans la sortie. Lors de la désérialisation, les balises absentes reçoivent la valeur par défaut. Les nombres magiques de XmlConstants (#751) servent de sentinelle "non défini" pour les valeurs par défaut int et string. Pour boolean, la valeur par défaut est false (la valeur la plus courante). Pour double, la valeur par défaut est NaN ("non défini").
asCDATA() — Protection des caractères spéciauxSi true, la valeur de la chaîne est encapsulée dans un bloc XML <![CDATA[...]]>. Nécessaire pour les champs pouvant contenir les caractères <, >, & — par exemple, HTML dans les champs de description ou SQL dans les logs. Sans CDATA, ces caractères devraient être échappés en <, >, &, rendant le XML illisible.
XmlObjectWriter parcourt tous les champs d'un objet via la réflexion lors de la sérialisation@XmlField (et l'absence de @XmlOmitField)Converter approprié pour transformer la valeur du champ en chaîneXmlObjectReader fait l'inverse : lit la balise/l'attribut depuis le XML, trouve le champ correspondant par nom ou alias, appelle Converter pour la transformation inverse| Fonctionnalité | XmlField | XStream | JAXB |
|---|---|---|---|
| Alias de champ | alias="name" | @XStreamAlias("name") | @XmlElement(name="name") |
| Attribut vs élément | asAttribute=true | @XStreamAsAttribute | @XmlAttribute |
| Exclusion de champ | @XmlOmitField | @XStreamOmitField | @XmlTransient |
| Valeur par défaut | defaultIntValue=0 | ❌ aucune | ❌ aucune |
| CDATA | asCDATA=true | ❌ aucune | ❌ aucune |
| Versionnage du format | ✅ via XmlObject | ❌ aucune | ❌ aucune |
868d6abb7 2025 → 2026 (mise à jour de l'année de copyright) 63081666f En-têtes des fichiers source : 2024→2025 b6092df09 Copyright 2023 → 2024 ab45d51fa Copyright 2001-2022 → 2001-2023 5f7ef41b8 Copyright 2021 → 2022 cd27dd997 package xstream → xmlstream (renommé pour éviter la confusion avec la bibliothèque XStream) ceb63e8a1 En-tête du code source : (C) 2001-2021 7c79f1922 Copyright de l'en-tête source → 2020 32f634b88 Optimiser les imports dd5ca38ac Copyright de tous les en-têtes de fichiers Java mis à jour ou créés 9ebb88522 Commit initial
32f634b88) et le renommage du package ont touché ce fichier. L'attribut commenté implementationClass() suggère que l'auteur a envisagé un mappage interface-implémentation au niveau du champ mais a choisi de le gérer dans XmlObjectReader.addImplementationMapping() à la place.