通过XML解析器推送数据是否会按照此规范执行验证?

通过XML解析器推送数据是否会按照此规范执行验证?,xml,validation,Xml,Validation,我在一个系统上工作,该系统声明这是唯一允许的输入: 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.

我在一个系统上工作,该系统声明这是唯一允许的输入:

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是有效的,这不是您正在做的。

如果文档格式正确,那么它将根据您的要求是有效的


请注意,“有效”xml文档通常意味着它根据XSD或DTD是有效的,这不是您正在做的。

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

您的方法将拒绝包含序列“]]>”的字符串。我看不出一个简单的方法来解决这个问题。但不管怎样,这似乎是一种相当严厉的方法:仅仅应用正则表达式不是更简单吗?

谢谢Michael。也许我会在解析之前去掉序列“]]>。>>“仅仅应用正则表达式不是更简单吗?”。。。。我认为解析更简单、更快,因为XML解析器是用C编写的,我不必编写可能有缺陷的正则表达式。如果速度很重要,那么实例化XML解析器是最不愿意做的事情。字符扫描会很快,但启动开销会很高。我在这里找到了一个正则表达式来完成这项工作:有趣的是,正则表达式的性能几乎与通过XML解析器推送数据进行验证的性能完全相同。谢谢Michael。也许我会在解析之前去掉序列“]]>。>>“仅仅应用正则表达式不是更简单吗?”。。。。我认为解析更简单、更快,因为XML解析器是用C编写的,我不必编写可能有缺陷的正则表达式。如果速度很重要,那么实例化XML解析器是最不愿意做的事情。字符扫描会很快,但启动开销会很高。我在这里找到了一个正则表达式来完成这项工作:有趣的是,正则表达式的性能几乎与通过XML解析器推送数据进行验证的性能完全相同。