您好我有一个xml文件和一个来自Active Directory的字符串...我想用xml文件中的值检查字符串。
这里是xml: Permissiongroups.xml
<Permissiongroup>
<Permission canonicalname="OU=dbg,OU=de,OU=zzz,DC=company_test,DC=com" display="group" />
<Permission canonicalname="OU=brv,OU=de,OU=zzz,DC=company_test,DC=com" display="group" />
<Permission canonicalname="OU=EK,OU=brv,OU=de,OU=zzz,DC=company_test,DC=com" display="group" />
</Permissiongroup>
我的C#代码:
string canonicalname = user.canoncialName; //here I get the canonicalname of the search user
//例如在这里&#34; CN = Tarasov \,W,OU = PRG,OU = IT,OU = dbg,OU = de,OU = zzz,DC =公司,DC = com& #34;
string path = Server.MapPath("~/App_Data/Permissiongroups.xml"); // Get XML Path
string group = GetGroup(path, canonicalname); // Get User that match with canonicalname
这是我的方法:
private string GetGroup(string xml, string canonicalname)
{
XDocument document;
XElement element;
try
{
document = XDocument.Load(xml);
//check every attribute canonicalname in the xml with the string canonicalname
//return display value from the element with attributte canonicalname = canonicalname
}
catch (Exception)
{
return null;
}
finally
{
document = null;
element = null;
}
}
现在是我的问题我如何在xml中创建一个循环,给我一个属性canoicalname值。我需要用另一个字符串检查它。
答案 0 :(得分:1)
你可以试试这个:
var permissions = document.Descendants("Permission");
foreach (var p in permissions)
{
Console.WriteLine(p.Attribute("canonicalname").Value);
}
这只是一个如何打印这些值的示例,但我认为您将完成其余的工作,因为我不知道这些检查要求是什么。
如果您想找到与Permission
匹配的canonicalname
,可以尝试以下代码:
var searchedPermission = permissions.FirstOrDefault(p => p.Attribute("canonicalname").Value == canonicalname);
答案 1 :(得分:1)
您可以使用LINQ to XML方法。首先使用字符串canonicalname:
在xml中查找所有属性canonicalnamevar q = (from c in doc.Descendants("Permission")
where string.Equals(c.Attribute("canonicalname").Value, canonicalname)
select c).ToList();
然后显示值:
foreach (var item in q)
{
Console.WriteLine(item.Attribute("canonicalname").Value);
}