gpt4 book ai didi

java - Woodstox StAX - 如何关闭文本内容验证?

转载 作者:行者123 更新时间:2023-12-02 00:02:39 25 4
gpt4 key购买 nike

我正在使用默认的 Woodstox EventReader 读取 XML 文件,例如:

XMLInputFactory.newInstance().createXMLEventReader(new FileInputStream(fileName));

如果输入文件的某些文本内容恰好包含 Unicode NULL 字符,则会出现以下异常/堆栈跟踪:

WstxUnexpectedCharException.<init>(String, Location, char) line: 17 
ValidatingStreamReader(StreamScanner).constructNullCharException() line: 604
ValidatingStreamReader(StreamScanner).throwInvalidSpace(int, boolean) line: 633
ValidatingStreamReader(BasicStreamReader).readTextSecondary(int, boolean) line: 4624
ValidatingStreamReader(BasicStreamReader).finishToken(boolean) line: 3661
ValidatingStreamReader(BasicStreamReader).next() line: 1063
WstxEventReader(Stax2EventReaderImpl).nextEvent() line: 255

我想避免验证文本内容。在 XMLInputFactory 上设置 IS_VALIDATING 并不能解决问题。

检查源代码后发现BasicStreamReader的next()引用了“mValidateText”变量来确定是否验证。

来源:

/**
* Flag that indicates that textual content (CDATA, CHARACTERS) is to
* be validated within current element's scope. Enabled if one of
* validators returns {@link XMLValidator#CONTENT_ALLOW_VALIDATABLE_TEXT},
* and will prevent lazy parsing of text.
*/
protected boolean mValidateText = false;

我似乎不知道如何在 InputFactory 或 EventReader 中更改/设置此值?也许我需要指示 InputFactory 不使用 ValidatingStreamReader,而是使用 TypedStreamReader?

最佳答案

需要一个符合规范的 XML 解析器来拒绝格式错误的内容。您需要修复您的(非)XML,并让解析器完成其工作。

关于java - Woodstox StAX - 如何关闭文本内容验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14530963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com