Вопрос

Я использую XmlDocument для анализа и манипулирования строкой XHTML, преобразования некоторых узлов в узлы, отличные от HTML.

Каков наилучший способ получить список всех узлов с данным именем класса? Это можно сделать с помощью XPath?

Это было полезно?

Решение

С данным классом? Если это только один класс, то вы должны иметь возможность делать что-то вроде .SelectNodes (" // * [@ class = 'foo'] "). Если это не xhtml, то HTML Agility Pack стоит посмотреть.

На клиенте jQuery был бы хорошим вариантом - и поддерживает составные имена классов.

Если у вас есть несколько имен классов в отдельных элементах, и вам нужно обработать их на сервере, я ожидаю, что вам может понадобиться сначала найти классы-кандидаты (" // * [@ class! = '']), и затем зациклите их, выполнив Split () и проверив имя класса в результатах; то есть вытащить его вручную.

В терминах LINQ, что-то вроде:

        var qry = from XmlElement el in d.SelectNodes("//*[@class!='']")
                  let classes = el.GetAttribute("class").Split(new[] {' '},
                          StringSplitOptions.RemoveEmptyEntries)
                  where classes.Contains("foo")
                  select el;

Другие советы

Да, с XPath это просто:

//*[@class='foo']
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top