应用程序需要验证不可打印的ascii字符的不同输入XML消息。我们目前知道两种方法可以做到这一点。
更改XSD以包含限制。
使用正则表达式
哪种方法在性能方面更好,因为我们的应用程序必须在几秒钟内返回响应?还有其他选择吗?
答案 0 :(得分:0)
这主要是一个意见问题,但如果你有一个XSD似乎是包含验证的自然地方。您可能需要考虑的唯一事情是,通过XSD,您将失败或通过,而使用临时Java验证,您可以忽略不可打印,或替换或采取操作而不会完全失败输入。
答案 1 :(得分:0)
在XML 1.0文档中,(a)ASCII,(b)不可打印和(c)允许的唯一字符是CR,NL和TAB。我发现很难理解为什么排除这三个字符特别重要,但是如果你已经有了XSD架构,那么在那里添加限制是有意义的。
通常的做法是不要使这三个字符无效,而是将它们视为等同于空格字符,您可以使用具有空白方面值的数据类型" normalize"或"崩溃"。