[JAVA] Comment créer un retrait de deux espaces d'un octet dans l'implémentation JAXB du JDK

Si vous essayez de produire du XML indenté à l'aide de l'implémentation JAXB du JDK (implémentation intégrée au JDK jusqu'à JDK 10 = `com.sun.xml.bind: jaxb-impl '), l'indentation est un espace demi-largeur par défaut. Ce sera 4 caractères.

modèle


@XmlRootElement
public class User {
  private String id;
  private String name;
  public void setId(String id) {
    this.id = id;
  }
  public String getId() {
    return id;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getName() {
    return name;
  }
}

Traitement de la sortie XML à l'aide de JAXB


User user = new User();
user.setId("001");
user.setName("Kazuki");

Marshaller marshaller = JAXBContext.newInstance(User.class).createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter writer = new StringWriter();
marshaller.marshal(user, writer);
System.out.println(writer.toString());

XML de sortie


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
    <id>001</id>
    <name>Kazuki</name>
</user>

Spécifiez la chaîne de retrait à l'aide de l'implémentation JAXB du JDK

Lorsque vous utilisez l'implémentation JAXB du JDK, vous pouvez spécifier une chaîne d'indentation dans la propriété com.sun.xml.internal.bind.indentString.

Exemple de spécification de chaîne de caractères de retrait


User user = new User();
user.setId("001");
user.setName("Kazuki");

Marshaller marshaller = JAXBContext.newInstance(User.class).createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty("com.sun.xml.internal.bind.indentString", "  "); //2 espaces à un octet
StringWriter writer = new StringWriter();
marshaller.marshal(user, writer);
System.out.println(writer.toString());

XML de sortie


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
  <id>001</id>
  <name>Kazuki</name>
</user>

Résumé

Avec l'implémentation JAXB du JDK, il était possible de changer facilement le nombre de caractères indentés. Qu'en est-il des autres implémentations! ??

Recommended Posts

Comment créer un retrait de deux espaces d'un octet dans l'implémentation JAXB du JDK
Comment définir des variables d'environnement dans le fichier de propriétés de l'application Spring Boot
Organisé comment interagir avec le JDK par étapes
Comment écrire un exemple d'implémentation du problème dans E05 (ruby, C11) en temps réel hors ligne
Comment définir le niveau de journalisation à afficher dans la version commerciale de orhanobut / logger
Résumé de l'utilisation du jeu de proxy dans IE lors de la connexion avec Java
Comment régler chrony lorsque le temps change dans CentOS7
Comment dériver le dernier jour du mois en Java
Comment définir Lombok dans Eclipse
Comment définir l'adresse IP et le nom d'hôte de CentOS8
Fixez le nom du fichier de guerre à celui défini dans Maven
Comment obtenir l'identifiant de la clé PRIMAY incrémentée automatiquement dans MyBatis
La milliseconde définie dans /lib/calendars.properties de Java jre est UTC
Comment obtenir la longueur d'un fichier audio avec Java
Comment incrémenter la valeur de Map sur une ligne en Java
Comment déterminer le nombre de parallèles
[Java] Comment régler la date sur 00:00:00
Comment trier une liste de SelectItems
Comment obtenir la date avec Java
Comment modifier le nombre maximum et maximum de données POST dans Spark
Comment trouver le nombre total de pages lors de la pagination en Java
Comment contraindre l'action de la destination de transition lorsqu'elle n'est pas connectée
Comment changer la valeur d'une variable à un point d'arrêt dans intelliJ
Comment obtenir le chemin absolu d'un répertoire s'exécutant en Java
Développement Android, comment vérifier null dans la valeur de l'objet JSON
Comment définir l'image pour dessiner à gauche / à droite du bouton à l'aide de la police d'icône (Iconics)
Connexion Java-base de données Connexion Java-MySQL ③-2: Comment définir CLASSPATH sur le bus de construction Eclipse (Pleiades All in One) / septembre 2017
[Swift] Comment obtenir le nombre d'éléments dans un tableau (super basique)
Résumé de la sélection des éléments dans Selenium
[Order method] Définit l'ordre des données dans Rails
Comment trouver la cause de l'erreur Ruby
graphql-ruby: Comment obtenir le nom de la requête ou de la mutation dans le contrôleur Remarque
Comment vérifier le journal dans le conteneur Docker
Personnalisez la répartition du contenu de Recyclerview
Comment définir les tabulations et les espaces pour qu'ils soient visibles à l'aide de la touche de tabulation pour insérer des espaces dans des fichiers Java dans Eclipse
Comment obtenir l'ID d'un utilisateur qui s'est authentifié avec Firebase dans Swift
Comment vérifier la dernière version de io.spring.platform pour l'écriture dans pom.xml de Spring (STS)
Définir l'heure de LocalDateTime à une heure spécifique
Comment obtenir le jour d'aujourd'hui
[Swift] Comment changer l'ordre des éléments de barre dans le contrôleur de barre d'onglets [Débutant]
Sortie de la façon d'utiliser la méthode slice
[Java] (pour MacOS) Méthode de définition du chemin de classe
[Java] Est-il inutile de vérifier "l'identité" dans l'implémentation de la méthode equals ()?
Comment utiliser JQuery dans Rails 6 js.erb
Comment installer Oracle JDK 1.8 dans Ubuntu 18.04 LTS?
Comment afficher le résultat du remplissage du formulaire
Comment créer une combinaison unique de données dans la table intermédiaire des rails
Comment définir quand "Le constructeur Empty () n'est pas visible" se produit dans junit
Comment créer la blockchain la plus simple de Ruby
Comment vérifier les commandes Rails dans le terminal
Comment installer Docker dans l'environnement local d'une application Rails existante [Rails 6 / MySQL 8]
[Java] Mémo de méthode d'implémentation pour définir le jeton de nom d'utilisateur WS-Security dans SOAP Stub of axis2
Comment utiliser UsageStatsManager dans Android Studio (Comment vérifier l'heure de démarrage d'autres applications)
Comment obtenir le nom de classe de l'argument de LoggerFactory.getLogger lors de l'utilisation de SLF4J en Java
Comment utiliser git avec la puissance de jgit dans un environnement sans commandes git
Comment définir une limite de relance pour sidekiq et notifier les files d'attente mortes avec Slack
[Java] Comment afficher les jours acquis par LocalDate et DateTimeformatter en japonais
[Rails] Comment afficher les prévisions météo de l'adresse enregistrée en japonais en utilisant OpenWeatherMap