Проверьте XPath в.NET

array.prototype.find('name', 'name') устарела и часто не очень эффективна. Вы можете попробовать что-то вроде let role = guild.roles.find(r => r.name === 'rolename'), а затем использовать переменную, которую вы можете сказать id: role.id, если бы вы предоставили действительную роль.

13
задан ripper234 21 November 2008 в 14:46
поделиться

3 ответа

Как я могу проверить, что данная строка XPath допустима в C#/.NET?

Вы пытаетесь создать XPathExpression от него и выгода исключение.

try 
{
    XPathExpression.Compile(xPathString);
}
catch (XPathException ex)
{
    MessageBox.Show("XPath syntax error: " + ex.Message);
}
16
ответ дан 1 December 2019 в 21:12
поделиться

Ответ очень близко к тому, что записал 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);
        }
    }
}
5
ответ дан 1 December 2019 в 21:12
поделиться

Используйте 'умеренное' регулярное выражение для отфильтровывания полного мусора. Если это передает regex, просто выполните запрос и поймайте исключения, как упомянутый выше...

1
ответ дан 1 December 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: