Вы хотите (вероятно) выражение это ...
/x:Invoice/InvoiceLine[ID='2']
В настоящее время, делая /x:Invoice/InvoiceLine/ID[ID='2']
, вы выбираете сам элемент ID
, но только в том случае, если у этого ID
есть дочерний элемент ID
из 2 (чего нет).
Делая /x:Invoice/InvoiceLine[ID='2']
, вы выбираете элемент InvoiceLine
, поэтому относительное выражение cbc:Name
должно также что-то возвращать.
Обратите внимание, это предполагает, что вы правильно обрабатываете пространства имен, так как вы фактически не показывали никаких объявлений пространства имен в своем XML.
(Обратите внимание: если вы хотите выбрать элемент ID
, вы должны написать /x:Invoice/InvoiceLine/ID[.='2']
, но чтобы получить name
, вам нужно будет сделать ../cbc:name
, где для получения используется ..
родитель текущего узла)