Допустим, у меня есть этот документ.
<a:Root>
<a:A>
<title><a:B/></title>
<a:C>
<item><a:D/></item>
</a:C>
</a:A>
</a:Root>
И у меня для XmlNode установлено значение <a:A>
.
Если я скажу
A.SelectNodes( "//a:*", namespaceManager )
Я получаю B
, C
и D
. Но я не хочу D
, потому что он вложен в другой элемент "a:".
Если я скажу
A.SelectNodes( "//a:*[not(ancestor::a:*)]", namespaceManager )
конечно, я ничего не получаю, так как и A, и его родитель находятся в пространстве имен "a".
Как я могу выбрать только B
и C
, то есть самые мелкие дочерние элементы, соответствующие пространству имен?
Спасибо.
Обратите внимание, что это XPath 1.0 (.NET 2), поэтому я не могу использовать префиксы в области видимости (которые, по-видимому, могут помочь).
Кроме того, это не совсем вопрос о пространствах имен. Проблема будет такой же, как и при других критериях соответствия.