使用Regex进行XPath验证

时间:2014-03-16 18:42:42

标签: c# xml regex validation xpath

尽可能多地详细描述问题。 例如,我有xml文件:

<?xml version="1.0"?>
<root>
   <paths>
      <path>
         <file>
        <id>1</id>
        <name>example</name>
     </file>
     <options>
        <isreadonly>true</isreadonly>
     </options>
      </path>
   </paths>
</root>

并拥有XPahts:

  • 根/路径/路径/文件/ ID
  • 根/路径/路径/文件/名称
  • 根/路径/路径/选项/ isreadonly

如何使用正则表达式验证此路径?

我可以使用此正则表达式验证一个xml元素名称 - ^(?!XML)[a-zA-Z] [\ w] * $,但我需要String.Split(此字符串)然后在循环中使用正则表达式

这是xml元素名称的命名规则:

  • 名称可以包含字母,数字和其他字符
  • 名称不能以数字或标点符号开头
  • 名称不能以字母xml(或XML,或Xml等)
  • 开头
  • 名称不能包含空格

无效路径:

  • XML /...
  • ... / xmlang /...
  • ... / 1asdf /...
  • 1个/.../...
  • ... / _ asdf / ... etc。

感谢。

1 个答案:

答案 0 :(得分:0)

如果您打算在模型上标记属性,您只需创建一个自定义属性来检查表达式是否编译。 这将是一个很容易,然后试图正则表达它。 由于正则表达式不是您要解析的工具=&gt; https://softwareengineering.stackexchange.com/questions/113237/when-you-should-not-use-regular-expressions(见接受的答案)。

自定义属性可以如下所示:

public class MyCustomAttribute : ValidationAttribute {
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
     {
        //Your logic here.
        return ValidationResult.Success;
     }
}