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

标签 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.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");           

关于java - Woodstox 通过 SimpleXML 属性限制 - 如何设置它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52879100/

相关文章:

android - 显示android :dialogMessage in a ListPreference dialog

java - 找出导致 equals() 返回 false 的原因

c# - EXCEL XML 格式不是真的标准吗?

java - 不使用 Mapper 类读取 XML

java - 切换到log4j2后如何修复javax.xml.parsers.ParserConfigurationException?

Java - MaskFormatter

java - 在 Hibernate 中使用 Native SQL 批量插入

java - 为什么 jar 执行的通配符在 docker CMD 中不起作用?

java - while() 循环的问题

android - 将带撇号的 XML 解析为 ' 时出错