//
в начале выражения XPath начинается с корня документа. Попробуйте ".//stuffChild". , сокращение для self :: node (), которое устанавливает контекст для поиска, а // сокращение для оси-потомка.
Итак, у вас есть:
XmlNode stuffChild = stuff.SelectSingleNode(".//stuffChild");
, что переводится как:
xmlNode stuffChild = stuff.SelectSingleNode ("self :: node () / Потомок :: stuffChild");
xmlNode stuffChild = stuff.SelectSingleNode("self::node()/descendant-or-self::stuffChild");
В случае, когда дочерний узел может иметь то же имя, что и родительский, вы можете использовать чуть более подробный синтаксис, который следует ниже, чтобы гарантировать, что вы не выберете родительский узел:
xmlNode stuffChild = stuff.SelectSingleNode("self::node()/descendant::stuffChild");
Также обратите внимание, что если "stuffChild" является прямым потомком "stuff", вы можете полностью пропустить префиксы и просто выбрать "stuffChild".
XmlNode stuffChild = stuff.SelectSingleNode("stuffChild");
В учебнике W3Schools содержится полезная информация в удобном для восприятия формате.