我正在使用 XSD,并且可以以字符串形式从 XSD 访问模式。一个例子:
<xsd:pattern value="[0-9]{8}"/>
给我 C# 字符串
string pattern = "[0-9]{8}";
根据我从 XSD 获取的模式字符串(可以是任何有效的 XSD 模式条目),我尝试计算出 XML 中字段内容的最大可能长度。
在这个简单的例子中,它显然是 8 - 我可以通过检查 {n} 并假设这就是长度来算出。在其他模式中,我还可以检查 * 或 + 并假设无界 - 但我正在寻找一种可用于执行此操作的更通用的方法。
请注意,不保证模式字符串与 .Net 的 Regex 类兼容。
我还可以访问 XmlSchemaPatternFacet 类,这是我首先用来解析 XSD 的类(如果有帮助的话)。
谢谢你提供的所有帮助
您几乎肯定需要解析正则表达式才能实现此目的。例如,您可以使用 Saxon 中的开源正则表达式解析器(它实现了正确的正则表达式方言)。这将创建一个子表达式树,您可以添加一个方法来计算树中每个节点的最大匹配长度。这Operation
代表树中节点的类,已经(在 9.6 中)具有方法getMatchLength()
and getMinimumMatchLength()
,并且很容易添加getMaximumMatchLength()
其工作原理相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)