特定の xpath 文字列が C#/.NET で有効であることを確認するにはどうすればよいですか?
XPath を実行して例外をキャッチするだけが有効な解決策であるかどうかはわかりません (しばらく喉に胆汁を置いておきます) - 明日、テストしていない他の入力に出くわしたらどうなるでしょうか?
特定の XPath 文字列が C#/.NET で有効であることを確認するにはどうすればよいですか?
そこから を構築しXPathExpression
て、例外をキャッチしようとします。
try
{
XPathExpression.Compile(xPathString);
}
catch (XPathException ex)
{
MessageBox.Show("XPath syntax error: " + ex.Message);
}
答えはTomalakが書いたものに非常に近いです(コンパイルエラーを修正し、XMLに必須の本文を入れてください):
public static class XPathValidator
{
/// <summary>
/// Throws an XPathException if <paramref name="xpath"/> is not a valid XPath
/// </summary>
public static void Validate(string xpath)
{
using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes("<xml></xml>")))
{
XPathDocument doc = new XPathDocument(stream);
XPathNavigator nav = doc.CreateNavigator();
nav.Compile(xpath);
}
}
}
完全なガベージを除外するには、「穏やかな」正規表現を使用します。正規表現に合格した場合は、上記のように、クエリを実行して例外をキャッチするだけです...