我可以使用一些帮助来提供一种解决方案来识别XPath格式的输入。让我们说输入看起来像这样:
//*[@id="" or @text="i love stackoverflow" or @name="oh yea" or @class=some-css-class"]
但是这样做的挑战是XPath值会发生巨大变化。如果您有任何建议,请告诉我们。
提前致谢!
答案 0 :(得分:2)
您可以测试输入字符串是否是有效的XPath表达式,如下所示:
$string = '//*[@id="" or @text="i love stackoverflow" or @name="oh yea" or @class="some-css-class"]'
try{
$null = [System.Xml.XPath.XPathExpression]::Compile($string)
# $string is valid XPath
}
catch {
# $string is not valid XPath
}
答案 1 :(得分:1)
你需要注意一些计算机科学理论。正则表达式只能分析有限类语法的句子,并且XPath的语法太复杂而不适合该类。您可以识别XPath的一个简单子集,如果它对您有用,但您最好的选择是使用现成的XPath解析器并查看它是否接受该表达式是有效的。 (您还需要考虑XPath在语义上是否有效,例如它是否包含未声明的变量引用或名称空间前缀?)