Wenn Sie versuchen, eingerücktes XML mithilfe der JAXB-Implementierung des JDK auszugeben (in das JDK integrierte Implementierung bis JDK 10 = com.sun.xml.bind: jaxb-impl
), ist der Einzug standardmäßig ein Leerzeichen mit halber Breite. Es werden 4 Zeichen sein.
Modell-
@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;
}
}
XML-Ausgabeverarbeitung mit 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 ausgeben
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
<id>001</id>
<name>Kazuki</name>
</user>
Wenn Sie die JAXB-Implementierung des JDK verwenden, können Sie in der Eigenschaft com.sun.xml.internal.bind.indentString
eine Einrückungszeichenfolge angeben.
Beispiel für die Angabe einer Zeichenfolge
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 Einzelbyte-Leerzeichen
StringWriter writer = new StringWriter();
marshaller.marshal(user, writer);
System.out.println(writer.toString());
XML ausgeben
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
<id>001</id>
<name>Kazuki</name>
</user>
Mit der JAXB-Implementierung des JDK war es möglich, die Anzahl der eingerückten Zeichen einfach zu ändern. Was ist mit anderen Implementierungen! ??
Recommended Posts