Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Woodstox通过SimpleXML属性限制-如何设置它们?_Java_Xml_Xml Parsing_Woodstox - Fatal编程技术网

Java Woodstox通过SimpleXML属性限制-如何设置它们?

Java 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

我一直在尝试让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使用新的限制?

我找到了一种有效的方法。我创建了自己的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);

我想我第一次试过,但当它不起作用时,我感到困惑。但这是很久以前的事了,所以不确定我是否记得对。