如何在C#中使用XML模式正则表达式?

如何在C#中使用XML模式正则表达式?,c#,regex,xsd,C#,Regex,Xsd,我有一个由两部分组成的问题: 如何获取XSD方面的regex表达式,然后使用它来确定字符串是否与限制匹配?在我看来,这是“如何将XMLSchema正则表达式转换为.NETregex”,但如果您有其他方法,而不是转换表达式,我愿意接受建议 如果测试(#1)失败,我如何使用XSD模式regex自动创建满足约束的字符串 这是你的答案。假设关联的简单类型有更多的方面,并且您只想根据模式一进行验证,那么您只需在中找到枚举方面,使用该方面的副本创建一个新的XmlSchemaSimpleType,使用新的Xm

我有一个由两部分组成的问题:

  • 如何获取
    XSD
    方面的
    regex
    表达式,然后使用它来确定字符串是否与限制匹配?在我看来,这是“如何将XMLSchema正则表达式转换为.NET
    regex
    ”,但如果您有其他方法,而不是转换表达式,我愿意接受建议

  • 如果测试(#1)失败,我如何使用
    XSD
    模式
    regex
    自动创建满足约束的字符串

  • 这是你的答案。假设关联的简单类型有更多的方面,并且您只想根据模式一进行验证,那么您只需在中找到枚举方面,使用该方面的副本创建一个新的XmlSchemaSimpleType,使用新的XmlSchemaSimpleTypeRestriction,并使用上面的值创建新的XmlSchemaSimpleTypeRestriction。然后使用这个新创建的简单类型,调用XmlSchemaDatatype.ParseValue

    我反对你在评论中的建议,因为regex“方言”是不同的

  • 我不知道有这样的东西,免费或其他。我相信这是可以做到的,但我从来没有找到真正有效的东西,当我自己需要它的时候。如果你找到了,请分享


  • 将XML模式正则表达式转换为.NET正则表达式并不太困难

    基本上,您需要用它们的.NET替代品(如\p{u xmlC}和\p{u xmlD})替换一些模式,如\c和\D

    此外,还需要将表达式换行成“^”和“$”标记

    .NET在中的预处理中实现此方法

    但是,如果决定复制粘贴实现,请小心

    您需要更换回路

    for(int-position=0;position

    for(int-position=0;position


    因为出于优化原因,预处理假定输入表达式包含在括号中。

    您无法使用正则表达式(可靠地)处理XML。你能提供更多细节吗,比如你想做什么样的验证或正则表达式解析?从XSD(例如,)中获取正则表达式,并在.NET中使用普通字符串值(“ABC”)。为什么不根据模式验证XML?@JohnSaunders,通常它可以是一个收集数据的自定义表单;字段级验证,其中字段映射到XSD中的特定简单内容。想象一下,验证是在你打字的时候完成的……这看起来很有希望!我将尝试看看它在我的应用程序中是否有效。您知道继承的模式方面是否正确地应用于XmlSchemaDatatype.ParseValue吗?