valor recorrer obtener nombre nodo modificar leer especifico elementos ejemplos atributo c# xml linq-to-xml xelement

c# - recorrer - obtener el valor del atributo xelement



recorrer elementos de un xml c# (4)

Terminé usando la manipulación de cadenas para obtener el valor, así que publicaré ese código, pero todavía me gustaría ver un enfoque XML si es que hay uno.

string strEl = el.ToString(); string[] words = strEl.Split('' ''); foreach (string word in words) { if (word.StartsWith("LoginName")) { strEl = word; int first = strEl.IndexOf("/""); int last = strEl.LastIndexOf("/""); string str2 = strEl.Substring(first + 1, last - first - 1); //str2 = "dn1/jdiaz" } }

Tengo un XElement que se ve así:

<User ID="11" Name="Juan Diaz" LoginName="DN1/jdiaz" xmlns="http://schemas.microsoft.com/sharepoint/soap/directory/" />

¿Cómo puedo usar XML para extraer el valor del atributo LoginName? Intenté lo siguiente, pero el q2 "Enumeración no produjo resultados".

var q2 = from node in el.Descendants("User") let loginName = node.Attribute(ns + "LoginName") select new { LoginName = (loginName != null) }; foreach (var node in q2) { Console.WriteLine("LoginName={0}", node.LoginName); }


de los documentos para XAttribute.Value:

Si obtiene el valor y es posible que el atributo no exista, es más conveniente utilizar los operadores de conversión explícitos y asignar el atributo a un tipo que Nullable<T> , como una string o Nullable<T> de Int32 . Si el atributo no existe, el tipo anulable se establece en nulo.


XmlDocument doc = new XmlDocument(); doc.Load("myFile.xml"); //load your xml file XmlNode user = doc.getElementByTagName("User"); //find node by tag name string login = user.Attributes["LoginName"] != null ? user.Attributes["LoginName"].Value : "unknown login";

La última línea de código, donde está configurando el string login , el formato se ve así ...

var variable = condition ? A : B;

Básicamente dice que si la condición es true , la variable es igual a A, de lo contrario la variable es igual a B.


var xml = @"<User ID=""11"" Name=""Juan Diaz"" LoginName=""DN1/jdiaz"" xmlns=""http://schemas.microsoft.com/sharepoint/soap/directory/"" />"; var user = XElement.Parse(xml); var login = user.Attribute("LoginName").Value; // "DN1/jdiaz"