次のようなXElementがあります。
<User ID="11" Name="Juan Diaz" LoginName="DN1\jdiaz" xmlns="http://schemas.Microsoft.com/sharepoint/soap/directory/" />
XMLを使用してLoginName属性の値を抽出するにはどうすればよいですか?私は次のことを試しましたが、q2「列挙は結果を生み出しませんでした」。
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);
}
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"
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";
string login
を設定するコードの最後の行、形式は次のようになります...
var variable = condition ? A : B;
基本的に、条件がtrue
の場合、変数はAに等しく、そうでない場合は変数はBに等しいと言っています。
xAttribute.Valueのドキュメントから:
値を取得していて、属性が存在しない可能性がある場合は、明示的な変換演算子を使用して、
string
やNullable<T>
のInt32
などのnull許容型に属性を割り当てる方が便利です。 ] _。属性が存在しない場合、null許容型はnullに設定されます。
私は文字列操作を使用して値を取得することになったので、そのコードを投稿しますが、XMLアプローチがある場合はそれでも見たいと思っています。
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"
}
}