我有一个具有以下结构的XML文件
<Users>
<User>
<ID>ABCD321</ID>
<Name>Mike John</Name>
<Modification>29/01/2014 16:05:34</Modification>
<LDAP-Groups>
<group Name="DOM_CLAS_48" />
</LDAP-Groups>
</User>
<User>
<ID>AXSD399</ID>
<Name>Tamy Peters</Name>
<Modification>29/01/2014 16:05:34</Modification>
<LDAP-Groups>
<group Name="DOM_SAP_208" />
<group Name="DOM_SAP_201" />
<group Name="DOM_SAP_263" />
</LDAP-Groups>
</User>
</Users>
我希望能够添加/删除特定的LDAP-GROUP示例:从ID为<group Name="DOM_SAP_201" />
的用户中删除<ID>AXSD399</ID>
,并将<group Name="DNS_SAP_999" />
添加到拥有该ID的用户<ID>ABCD321</ID>
到目前为止我尝试了什么:
public static void UpdateLDAP(string filename, string userId)
{
XDocument xdoc = XDocument.Load(filename);
XElement user = (from xml2 in xdoc.Descendants("User")
let xElement = xml2.Element("LDAP-Groups")
where
(from xml3 in xdoc.Descendants("User")
let xUser = xml3.Element("ID")
where xUser.Value == userId.ToUpper())
select xElement).FirstOrDefault();
//........
}
答案 0 :(得分:1)
您可能首先获得给定用户的所有组,然后更新您的XML(说实话我不知道如何更新它)
public static List<string> GetGroupsForGivenUser(XDocument xdoc, string userId)
{
var users = (from user in xdoc.Descendants("User")
let xElement = user.Element("ID")
where xElement != null && xElement.Value == userId.ToUpper()
select new
{
Id = xElement.Value,
Ldap = user.Elements("LDAP-Groups")
}).ToList();
return (
from user in users
from ldaps in user.Ldap
from ldap in ldaps.Elements("Group")
select ldap.Value
).ToList();
}