是否有正则表达式来检查xml是否格式正确?
由于
编辑:如果不是正则表达式,那么有一个很好的解析方法,我可以在c#中使用,不会抛出异常。我尝试使用xmlReader,但它对我没用。
答案 0 :(得分:7)
这超出了正则表达式的功能井。换句话说,答案是不可能的。
编辑:有很多工具可用于检查格式良好,但它们都涉及某种XML解析器/验证器。如果您提供有关您的环境的更多信息,我们可以指出您正确的方向。
答案 1 :(得分:6)
没有。
XML语法不规则,无法为任何正则表达式做噩梦。
你不是第一个提出这个问题的人,但是不要感到难过,因为关于使用正则表达式解析HTML和XML的问题将继续被问到,因为正则表达式看起来非常适合这项工作,但它们并不令人遗憾。 / p>
XML语法足够复杂,您无法使用正则表达式安全地解析它。它看起来简单而有规律,但是有足够的空间引起问题。一个令人讨厌的CDATA部分和事情变得非常困难。并考虑将RSS嵌入XML中的RSS源。
因此请使用XML解析库。有很多。
如果您想了解更多细节,请查看this question which gives some examples of the horror syntax you can meet和this question which shows what happens if do try to parse these things with Regular Expressions。
答案 2 :(得分:2)
没有正则表达式解决方案,because Jeff told me so.
答案 3 :(得分:2)
如果不是正则表达式,那么有一个很好的解析方法,我可以在c#中使用,不会抛出异常。我尝试使用xmlReader,但它对我没用。
使用XmlReader
和while(reader.Read()) {}
(捕获任何异常)可能是最快的纯托管方法。
答案 4 :(得分:1)
不,没有。 (实际上,至少就一般情况而言。)如果要确定XML是否格式正确,请使用验证解析器。
答案 5 :(得分:1)
改为使用XML validator。
答案 6 :(得分:1)
不,如果不考虑递归正则表达式。 Regexp无法检查仲裁嵌套。但是,一些正则表达式引擎接受递归正则表达式,您可以尝试将其用于此目的。
答案 7 :(得分:0)
最新版本的PCRE具有各种功能,可以实现这一目标,但代码会很丑陋。 libxml2附带xmllint,为什么不使用正确的工具来完成工作?
答案 8 :(得分:0)
我在这里做出一个假设。您认为使用库将太慢或太重,无法快速和/或有效地执行此操作。
如果 这个案例,那么请测试一下。尝试一些库,看看它们有多大,看看它们有多快。