基于权限解析xmldocument
本文关键字:xmldocument 权限 于权限 | 更新日期: 2023-09-27 18:08:26
我处理这个xml文档已经很长时间了,现在发现用户应该能够根据xml文档中定义的权限级别看到某些字段。这是文档之前的样子:
<?xml version="1.0" encoding="utf-8" ?>
<AccessControl>
<Field>
<name>First_Name</name>
<label>First Name</label>
</Field>
<Field>
<name>Last_Name</name>
<label>Last Name</label>
</Field>
......
.....
</AccessControl>
这是解析文档的方式:
doc.Load(System.Web.Hosting.HostingEnvironment.MapPath("~/ConfigFile.xml"));
XmlNode root = doc.DocumentElement;
XmlNodeList xnList = root.SelectNodes("/AccessControl/Field");
foreach (XmlNode xn in xnList)
{
string fieldName = xn["name"].InnerText;
.....
....
}
现在我在文档中添加一些权限节点,其中将包含field
节点,类似于:
<AccessControl>
<Permission Name = "permissionXYZ" >
<Field>
<name>First_Name</name>
<label>First Name</label>
</Field>
<Field>
<name>Last_Name</name>
<label>Last Name</label>
</Field>
....
</Permission>
<Permission Name = "permission123" >
<Field>
...
...
</Field>
</Permission>
</AccessControl>
如何根据文档中定义的权限只获取必需的字段??
使用LINQ,您可以根据属性值进行过滤,然后选择字段。Test.xml文件在我的例子中只是保存您的样例XML。
XDocument document = XDocument.Load("c:''temp''test.xml");
var fields = document.Descendants("Permission")
.Where(i => i.Attribute("Name") != null && i.Attribute("Name").Value == "permissionXYZ")
.Select(i => i.Descendants("Field"));