Supongamos que tengo un XmlNode y quiero obtener el valor de un atributo llamado "Nombre". ¿Cómo puedo hacer eso?
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" />
, que pasa la prueba. Quizás algo comovar attr = node.Attributes["Name"]; if(attr != null) {...}
podría funcionar.Para expandir la solución de Konamiman (incluidas todas las comprobaciones nulas relevantes), esto es lo que he estado haciendo:
fuente
puede recorrer todos los atributos como lo hace con los nodos
fuente
si todo lo que necesita son los nombres, use xpath en su lugar. No es necesario que realice la iteración usted mismo y verifique si es nulo.
fuente
Si usa
chldNode
como enXmlElement
lugar deXmlNode
, puede usarEl valor de retorno será simplemente una cadena vacía , en caso de que el nombre del atributo no exista.
Entonces su bucle podría verse así:
Esto seleccionará todos los nodos
<node>
rodeados por<Node><N0de></N0de><Node>
etiquetas y, posteriormente, los recorrirá y leerá el atributo "Nombre".fuente
Utilizar
para obtener el valor.
fuente
También puedes usar esto;
fuente
Otra solución más:
También evita la excepción cuando el atributo esperado
attributeName
realmente no existe.fuente