У меня есть следующий код, который возвращает все узлы и их значения.Я только хочу вернуть узлы, которые не имеют определенных дочерних узлов.Моя кодовая база, с которой я работаю, является
XmlNodeList nodelist = xmlDoc.SelectNodes("//DAV:schemata/DAV:classschema[@name='Tapestry']/DAV:propschema/DAV:*", nsmgr);
foreach (XmlNode node in nodelist)
{
strNode = node.Name;
strValue = node.InnerText;
responseString += strNode + " " + strValue + "\r\n ";
}
return responseString;
Так что мне нужно только то, что вернуть / propschema / *, если / propschema / child не содержит определенного дочернего узла.Для моего примера я не хочу возвращать узел propshema, если есть дочерний узел или
, который у меня был, хотя я должен был использовать что-то вроде
XmlNodeList nodelist = xmlDoc.SelectNodes("//DAV:schemata/DAV:classschema[@name='Tapestry']/DAV:propschema/DAV:*[not (count[system>0])", nsmgr);
Но это не удается сошибка неверного токена '// DAV: схемы / DAV: classschema [@ name =' Tapestry '] / DAV: propschema / DAV: * [not (count [system> 0])' 'имеет недопустимый токен.
Что я здесь не так делаю?Я пропускаю синтаксис "" или что-то еще?
Я определил, что если я смогу использовать фильтр в XPATH, я бы применил его не в той точке.Я хочу вернуть все узлы propschema и их детей, кроме случаев, когда у proschema был дочерний узел.Поэтому мне нужно поставить файлер раньше
XmlNodeList nodelist = xmlDoc.SelectNodes("//DAV:schemata/DAV:classschema[@name='Tapestry']/DAV:propschema[filter for system]/DAV:*", nsmgr);
Но всякий раз, когда я пытаюсь использовать фильтр типа «не» или типа, я получаю ошибку токена.
Можно ли фильтровать напрямую вXPATH?