今年的一个项目用到了xml的schema校验。但是在使用的过程中遇到了一个问题:
schema在控制字符串长度的时候用的是字符个数,比如 "abc" 和 “我爱你” 的长度都是3。但是按照字节来算。它们的长度是不一样的。
如果需要通过schema来实现按字节长度来校验的话,这里有个解决方式。
很简单,将字符串中的汉字替换为2个或多个(看编码)字母就OK了。校验失败后,会有对应的提示消息,因为原字符已经被修改,
如果出错,校验结果会提示不准确。所以,将汉字替换为字母或其他单字节时最好是进行编码,并保证每个包含汉字的节点被不同的但字节串
替换,且将但字节串与原内容进行映射。这样遇到异常情况,可以将提示信息在替换回原来的样子,就可以知道那个节点下的什么内容出错了。