Implementando GetByClassName para um .NET XmlDocument
-
06-07-2019 - |
Pergunta
Eu estou usando um XmlDocument para analisar e manipular uma string XHTML, convertendo alguns nós para não-HTML nós.
O que é a melhor maneira de obter uma lista de todos os nós com um determinado nome de classe? isso pode ser feito com o XPath?
Solução
Com uma determinada classe? Se é apenas uma classe, então você deve ser capaz de fazer algo assim .SelectNodes ( "// * [@ class = 'foo']"). Se não for xhtml, então o HTML agilidade pack vale a pena olhar.
No cliente, jQuery seria uma boa opção -. E suporta nomes de classe composta ??p>
Se você tem vários nomes de classes em elementos individuais, e necessidade de lidar com isso no servidor, eu espero que você pode precisar de encontrar as classes de candidato primeira ( "// * [@ classe! = '']), E depois loop sobre eles fazendo um Split()
e verificação para a classe-nome nos resultados;. ie puxá-lo para além manualmente
termos em LINQ, algo como:
var qry = from XmlElement el in d.SelectNodes("//*[@class!='']")
let classes = el.GetAttribute("class").Split(new[] {' '},
StringSplitOptions.RemoveEmptyEntries)
where classes.Contains("foo")
select el;
Outras dicas
Sim, é fácil com XPath:
//*[@class='foo']