Suponha que eu tenha um XmlNode e desejo obter o valor de um atributo denominado "Nome". Como eu posso fazer isso?
XmlTextReader reader = new XmlTextReader(path);
XmlDocument doc = new XmlDocument();
XmlNode node = doc.ReadNode(reader);
foreach (XmlNode chldNode in node.ChildNodes)
{
**//Read the attribute Name**
if (chldNode.Name == Employee)
{
if (chldNode.HasChildNodes)
{
foreach (XmlNode item in node.ChildNodes)
{
}
}
}
}
Documento XML:
<Root>
<Employee Name ="TestName">
<Childs/>
</Root>
<a x="1" />
, com , que passa no teste. Talvez algo assimvar attr = node.Attributes["Name"]; if(attr != null) {...}
possa funcionar.Para expandir a solução da Konamiman (incluindo todas as verificações de nulos relevantes), tenho feito isso:
fonte
você pode percorrer todos os atributos como faz com os nós
fonte
se tudo o que você precisa são os nomes, use xpath. Não há necessidade de fazer a iteração e verificar se há nulo.
fonte
Se você usar
chldNode
como emXmlElement
vez deXmlNode
, você pode usarO valor de retorno será apenas uma string vazia , caso o nome do atributo não exista.
Portanto, seu loop pode ser assim:
Isso selecionará todos os nós
<node>
circundados por<Node><N0de></N0de><Node>
tags e, subsequentemente, fará um loop por eles e lerá o atributo "Nome".fonte
Usar
para obter o valor.
fonte
Você também pode usar isso;
fonte
Mais uma solução:
Também evita a exceção quando o atributo esperado
attributeName
realmente não existe.fonte