Java 可以让JAXB格式化超过八层的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

我有一个过程需要生成格式良好的XML文档。使用
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结果的最大限制