使用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不是您想要解析的工具=> 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;
}
}