我正在开发一个系统,该系统声明这是唯一允许的输入:
The following Unicode characters are allowed:
#x9 | #xA | #xD | #x20 to #xD7FF | #xE000 to #xFFFD | #x10000 to #x10FFFF
Any characters not included in this list will be rejected.
For more information, see the http://www.w3.org/TR/REC-xml/#charsets
我需要验证我的数据以匹配上面给出的规范。
我开始编写代码来逐个字符地评估我的数据,然后我突然想到,这可能与XML允许的数据完全相同。
所以我想,不如把数据推送到XML解析器中,如果没有无效的令牌错误,那么验证就完成了。
因此,我编写了一些代码,将我的数据插入到一个最小XML文档中的CDATA元素中,然后解析数据,这很好——它可以工作,没有问题。
但我想知道,我达到目标了吗?通过XML解析器运行我的数据是否能确保它符合上述规范?我相信这是因为";以获取更多信息";上面的链接似乎重申了定义的unicode字符是XML中允许的字符。
但我想我最好问一下,因为我仍然认为成功的XML解析意味着文档通过了验证规则。
如果文档格式正确,那么它将根据您的要求有效。
请注意,"有效"的xml文档通常意味着它根据XSD或DTD是有效的,而这不是您要做的。
您的方法将拒绝包含序列"的字符串]]>";。我想不出一个简单的方法来解决这个问题。但无论如何,这似乎是一种相当严厉的方法:仅仅应用正则表达式不是更简单吗?