Ваш первый подход приведет к выражению XPath вроде этого:
Config/Scanner[DeviceID = '00199']/DebugLevel
Это вернет элемент DebugLevel первого Scanner в Config, для которого элемент DeviceID имеет текстовое значение 00199
Ваш второй подход приведет к выражению XPath, как это:
Config/Scanner[DeviceID = 00199]/DebugLevel
Это вернет элемент DebugLevel первого сканера в конфигурации, для которого элемент DeviceID имеет числовой значение 00199
.
Разница в том, что первый подход будет точно соответствовать 00199
, поэтому, если XMLstuff.DeviceID
является целым числом или строкой со значением 199
, он не будет работать,Второй подход будет работать до тех пор, пока содержимое элемента оценивается как целое число с правильным значением.Так что да, одинарные кавычки идентифицируют эту правую часть сравнения как текст.
XPath довольно мягок в преобразовании типов данных и выполнении сравнений.