Как я разрешаю, что ошибка “Выражение должна оценить к набору узлов” при проверке на существование узла?

Это сильно зависит от используемой вами программы запуска. Изображение выглядит как стандартная форма иконки Google Android 8+ (?). Я полагаю, что это может быть частью иконы, которую вы создали, но так как вы спрашиваете об этом, я сомневаюсь в этом.

Он был введен, чтобы все иконки казались более единообразными. Длительное нажатие на пустое место в панели запуска Google Pixel, например, показывает выбор, чтобы перейти к настройкам панели запуска, и там вы можете изменить форму, которую должны иметь все значки:

Icon shape settings in the Home settings

В более старых версиях андроида внешняя форма значков была индивидуальной, в то время как довольно крутая и правильно отображенный контур при перетаскивании их и т. Д. Многие жаловались на отсутствие единого вида всех значков. ]

В дополнение к этому, приложения могут использовать различные формы, адаптироваться к ним и, так сказать, заполнять их. См., Например, значок Chrome при изменении формы значка в настройках программы запуска. Появилось в Android 8: функция называется адаптивные иконки.

См. Документы об адаптивных значках здесь: https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive

12
задан Wayne Burkett 20 December 2011 в 20:14
поделиться

3 ответа

Данное выражение оценивает к булевской переменной, не набору узлов. Я предполагаю, что Вы хотите проверить, равняется ли ProjectName параметрическому тексту. В этом случае необходимо записать

//ErrorTable/ProjectName[text()='{0}']

Это дает Вам список всех узлов (набор узлов) соответствие данному условию. Этот список может быть пустым, в этом случае C#-Expression в Вашем образце возвратит пустой указатель.

Машинально: можно использовать исходное выражение XPath, но не с SelectSingleNode, а с Оценивают, как это:

(bool)xmlDocument.CreateNavigator().Evaluate(String.Format("//ErrorTable/ProjectName/text()='{0}'", projectName));
19
ответ дан 2 December 2019 в 07:22
поделиться

Попытка:

Node node = xmlDocument.SelectSingleNode(String.Format("//ErrorTable/ProjectName = '{0}'", projectName));

if (node != null) {
    // and so on
}

Править: глупая ошибка

1
ответ дан 2 December 2019 в 07:22
поделиться

Выражение XPath содержало тонкую ошибку. Это должно было быть:

xmlDocument.SelectSingleNode(String.Format("//ErrorTable/ProjectName[text()='{0}']", projectName));

Предыдущее выражение оценивало к булевской переменной, которая объясняет ошибку исключения. Спасибо за справку!

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

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