0

我一直试图让 SimpleXML 读取一个巨大的 XML 并遇到属性大小限制。

javax.xml.stream.XMLStreamException:在 com.ctc.wstx.sr.StreamScanner.constructLimitViolation(StreamScanner.java:2470) 处超出了最大属性大小限制 (524288)

我试过使用系统属性,但它似乎没有捡起它。

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

如何强制 Woodstox 使用新限制?

4

2 回答 2

1

我找到了一种可行的方法。我创建了自己的 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");           
于 2018-10-18T18:17:25.590 回答
0

这个简单的代码也可以工作:

XMLInputFactory factory = XMLInputFactory.newFactory();
factory.setProperty(WstxInputProperties.P_MAX_ATTRIBUTE_SIZE, Integer.MAX_VALUE);
于 2021-03-17T15:03:24.207 回答