Java 可以让JAXB格式化超过八层的XML文档吗?
我有一个过程需要生成格式良好的XML文档。使用Java 可以让JAXB格式化超过八层的XML文档吗?,java,xml,jaxb,Java,Xml,Jaxb,我有一个过程需要生成格式良好的XML文档。使用JAXB\u FORMATTED\u输出属性对大多数文档都有效,但无法缩进深度超过八级的元素。我试着在谷歌上搜索任何增加这个限制的方法,但我什么也没找到。我无法更改模式,因为它是我们的公司母公司要求我们使用的第三方模式 下面是一个简化的示例: @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement private static class FirstLevel { private Secon
JAXB\u FORMATTED\u输出
属性对大多数文档都有效,但无法缩进深度超过八级的元素。我试着在谷歌上搜索任何增加这个限制的方法,但我什么也没找到。我无法更改模式,因为它是我们的公司母公司要求我们使用的第三方模式
下面是一个简化的示例:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
private static class FirstLevel {
private SecondLevel secondLevel;
public SecondLevel getSecondLevel() {
return secondLevel;
}
public void setSecondLevel(SecondLevel secondLevel) {
this.secondLevel = secondLevel;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
private static class SecondLevel {
private ThirdLevel thirdLevel;
public ThirdLevel getThirdLevel() {
return thirdLevel;
}
public void setThirdLevel(ThirdLevel thirdLevel) {
this.thirdLevel = thirdLevel;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
private static class ThirdLevel {
private FourthLevel fourthLevel;
public FourthLevel getFourthLevel() {
return fourthLevel;
}
public void setFourthLevel(FourthLevel fourthLevel) {
this.fourthLevel = fourthLevel;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
private static class FourthLevel {
private FifthLevel fifthLevel;
public FifthLevel getFifthLevel() {
return fifthLevel;
}
public void setFifthLevel(FifthLevel fifthLevel) {
this.fifthLevel = fifthLevel;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
private static class FifthLevel {
private SixthLevel sixthLevel;
public SixthLevel getSixthLevel() {
return sixthLevel;
}
public void setSixthLevel(SixthLevel sixthLevel) {
this.sixthLevel = sixthLevel;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
private static class SixthLevel {
private SeventhLevel seventhLevel;
public SeventhLevel getSeventhLevel() {
return seventhLevel;
}
public void setSeventhLevel(SeventhLevel seventhLevel) {
this.seventhLevel = seventhLevel;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
private static class SeventhLevel {
private EighthLevel eighthLevel;
public EighthLevel getEighthLevel() {
return eighthLevel;
}
public void setEighthLevel(EighthLevel eighthLevel) {
this.eighthLevel = eighthLevel;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
private static class EighthLevel {
private String ninthLevel;
public String getNinthLevel() {
return ninthLevel;
}
public void setNinthLevel(String ninthLevel) {
this.ninthLevel = ninthLevel;
}
}
@Test
void delete_this_later(TestReporter testReporter) throws JAXBException, UnsupportedEncodingException {
EighthLevel eighthLevel = new EighthLevel();
eighthLevel.setNinthLevel("Hello, world!");
SeventhLevel seventhLevel = new SeventhLevel();
seventhLevel.setEighthLevel(eighthLevel);
SixthLevel sixthLevel = new SixthLevel();
sixthLevel.setSeventhLevel(seventhLevel);
FifthLevel fifthLevel = new FifthLevel();
fifthLevel.setSixthLevel(sixthLevel);
FourthLevel fourthLevel = new FourthLevel();
fourthLevel.setFifthLevel(fifthLevel);
ThirdLevel thirdLevel = new ThirdLevel();
thirdLevel.setFourthLevel(fourthLevel);
SecondLevel secondLevel = new SecondLevel();
secondLevel.setThirdLevel(thirdLevel);
FirstLevel firstLevel = new FirstLevel();
firstLevel.setSecondLevel(secondLevel);
JAXBContext context = JAXBContext.newInstance(FirstLevel.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
marshaller.marshal(firstLevel, outputStream);
byte[] actualBytes = outputStream.toByteArray();
testReporter.publishEntry("actual", "\n" + new String(actualBytes, "UTF-8"));
}
下面是结果输出:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<firstLevel>
<secondLevel>
<thirdLevel>
<fourthLevel>
<fifthLevel>
<sixthLevel>
<seventhLevel>
<eighthLevel>
<ninthLevel>Hello, world!</ninthLevel>
</eighthLevel>
</seventhLevel>
</sixthLevel>
</fifthLevel>
</fourthLevel>
</thirdLevel>
</secondLevel>
</firstLevel>
你好,世界!
有没有办法提高格式化JAXB结果的最大限制