使用Regex进行XPath验证

本文关键字:验证 XPath 进行 Regex 使用 | 更新日期: 2023-09-27 17:50:35

尽量详细地描述问题。例如,我有一个xml文件:

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

和xpats:

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

如何用正则表达式验证这个路径?

我可以用这个regex - ^(?! xml)[a-zA-Z]['w]*$验证一个xml元素名,但我需要String。分割(这个字符串),然后在循环中使用regex。

这是xml元素的命名规则:

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

无效路径:

  • xml/…
  • /xmlang…
  • /1 asdf…
  • 1/.../...
  • /_asdf/…等。

谢谢。

使用Regex进行XPath验证

如果你打算在你的模型上标记一个属性,你只需要创建一个自定义属性来检查表达式是否编译。这比正则化要容易得多。因为regex不是您想要解析的工具=> 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;
     }
}