首页 > 解决方案 > 通过 XML 解析器推送数据是否会根据本规范执行验证?

问题描述

我正在开发一个系统,该系统声明这是唯一允许的输入:

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 解析意味着文档通过了验证规则。

标签: xmlvalidation

解决方案


您的方法将拒绝包含序列“]]>”的字符串。我看不出一个简单的方法。但无论如何,这似乎是一种相当严厉的方法:应用正则表达式不是更简单吗?


推荐阅读