Ваши выражения XPath неверны.
Поэтому измените код C # и его выражения XPath на
var query = @"//PName[Details/classification[@classification='paymenttype' and @category='Wallet']]";
// This query will select PName nodes with a condition
foreach (XmlNode n in docs.SelectNodes(query))
{
var titlelink = n.SelectSingleNode("@title");
var title = titlelink.Value;
var bedlink = n.SelectSingleNode("../Room/@bedType");
var bed = bedlink.Value;
}
Это должно приблизить вас к вашей цели.
Если вы хотите извлечь узлы / значения из другого элемента PName
, вы также можете получить к нему доступ с помощью XPath.Например, чтобы получить значение атрибута category
следующего элемента PName
, который имеет атрибут classification
со значением «Еда», вы можете использовать это выражение XPath в цикле foreach
:
var foodlink = n.SelectSingleNode("ancestor::PName/following-sibling::PName/properties/PName/Details/classification[@classification='Food']/@category");
var food = foodlink.Value;
Его вывод должен быть "Fruit".