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 unastring
oNullable<T>
deInt32
. 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"