有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

javax。xml。流动XMLStreamException:超出最大属性大小限制(524288) 在com上。反恐委员会。wstx。高级流动扫描器。constructLimitViolation(StreamScanner.java:2470)

我试过使用一个系统属性,但它似乎不起作用

-贾瓦克斯。xml。流动XMLInputFactory=com。反恐委员会。wstx。斯塔克斯。WstxInputFactory-Dcom。反恐委员会。wstx。maxAttributeSize=10000000

如何强制Woodstox使用新的限制


共 (2) 个答案

  1. # 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");           
    
  2. # 2 楼答案

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

    XMLInputFactory factory = XMLInputFactory.newFactory();
    factory.setProperty(WstxInputProperties.P_MAX_ATTRIBUTE_SIZE, Integer.MAX_VALUE);