Ограничения атрибутов Woodstox через SimpleXML - как их установить? - PullRequest
0 голосов
/ 18 октября 2018

Я пытался заставить SimpleXML прочитать огромный XML и столкнуться с ограничением размера атрибута.

javax.xml.stream.XMLStreamException: Превышен максимальный размер атрибута (524288) в com.ctc.wstx.sr.StreamScanner.constructLimitViolation (StreamScanner.java:2470)

Я пытался использовать системное свойство, но оно, похоже, его не подбирает.

-Djavax.xml.stream.XMLInputFactory = com.ctc.wstx.stax.WstxInputFactory -Dcom.ctc.wstx.maxAttributeSize = 10000000

Как заставить Woodstox использовать новый лимит?

1 Ответ

0 голосов
/ 18 октября 2018

Я нашел способ, который работает.Я создал свой собственный XMLInputFactory, который расширяет фабрику woodstox, которая изменяет проблемный предел.

public class InputFactory extends WstxInputFactory {
    public InputFactory() {
        super();
        setProperty(WstxInputProperties.P_MAX_ATTRIBUTE_SIZE, Integer.MAX_VALUE);
    }
}

Затем просто установите системное свойство в main.

// Force use of our custom XML input factory
    System.getProperties().put("javax.xml.stream.XMLInputFactory", "my.custom.InputFactory");           
...