我一直在尝试让SimpleXML读取大量的XML并遇到属性大小限制。
com.ctc.wstx.sr.StreamScanner.constructLimitViolation(StreamScanner.java:2470):超出了javax.xml.stream.XMLStreamException的最大属性大小限制(524288)
我尝试过使用系统属性,但它似乎不起作用。
-Djavax.xml.stream.XMLInputFactory=com.ctc.wstx.stax.WstxInputFactory -Dcom.ctc.wstx.maxAttributeSize=10000000
如何强制Woodstox使用新的限制?
发布于 2018-10-19 02:17:26
我找到了一种可行的方法。我创建了自己的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"); 发布于 2021-03-17 23:03:24
这个简单的代码也可以工作:
XMLInputFactory factory = XMLInputFactory.newFactory();
factory.setProperty(WstxInputProperties.P_MAX_ATTRIBUTE_SIZE, Integer.MAX_VALUE);https://stackoverflow.com/questions/52879100
复制相似问题