Java Woodstox通过SimpleXML属性限制-如何设置它们?
我一直在尝试让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=10000000Java Woodstox通过SimpleXML属性限制-如何设置它们?,java,xml,xml-parsing,woodstox,Java,Xml,Xml Parsing,Woodstox,我一直在尝试让SimpleXML读取一个巨大的XML并遇到属性大小限制 javax.xml.stream.XMLStreamException:超出了最大属性大小限制(524288) 位于com.ctc.wstx.sr.StreamScanner.constructLimitViolation(StreamScanner.java:2470) 我试过使用一个系统属性,但它似乎不起作用 -Djavax.xml.stream.XMLInputFactory=com.ctc.wstx.stax.Wst
如何强制Woodstox使用新的限制?我找到了一种有效的方法。我创建了自己的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");
这个简单的代码也可以工作:
XMLInputFactory factory = XMLInputFactory.newFactory();
factory.setProperty(WstxInputProperties.P_MAX_ATTRIBUTE_SIZE, Integer.MAX_VALUE);
我想我第一次试过,但当它不起作用时,我感到困惑。但这是很久以前的事了,所以不确定我是否记得对。