Позволяет ли .NET SelectNodes () выбирать атрибуты? - PullRequest
2 голосов
/ 10 марта 2011

Тянет ли он все типы узлов, поддерживаемые Xpath? Кажется, когда я звоню

SelectNodes ( "@")

он просто возвращает элементы, которые содержат атрибуты, но я хочу получить список самих атрибутов. Другими словами, я ожидал бы, что результирующая коллекция узлов будет содержать только узлы типа Attr ... но это, похоже, не работает.

Ответы [ 3 ]

1 голос
/ 10 марта 2011

foreach (XmlAttribute att в selectNodes ("* / @ *")) ...

0 голосов
/ 10 марта 2011

Правильный синтаксис XPath для выбора узла контекста Атрибуты:

@*

Или

attribute::*

Но обратите внимание, что только элементыможет иметь атрибуты .Таким образом, если узел контекста является корневым документом, вы, конечно, ничего не выберете.

Если вы хотите все атрибуты из документа , используйте:

//@*

Это будет расширено до:

/descendant-or-self::node()/attribute::*
0 голосов
/ 10 марта 2011

Из документации:

Выбирает список узлов, соответствующих выражению XPath.

Пока свойство Attributes (узла)

Получает коллекцию XmlAttributeCollection, содержащую атрибуты этого узла.

http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.attributes.aspx

Чтобы получить все атрибуты в документе (я думаю, это то, что вы пытаетесь сделать?) вы можете попробовать

selectNodes ("@ *")

...