嗨我对xaml和使用xdocument的工作有疑问。
致我的用法:
我有一个DropDownList控件,我希望它填充xml文件,但我希望用户只能看到特殊值。我的意思是说他必须在一个活动的目录组中。所以我想在我的代码中加载xml并使用过滤器值更新它并将其加载到下拉列表中。
这里是我的xml:
<plants>
<plant id="DB" display=".testDB.." group="NPS_DB" />
<plant id="EL" display=".testEL.." group="NPS_EL" />
<plant id="IN" display="..testIN." group="NPS_IN" />
<plant id="SB" display=".testSB.." group="NPS_SB" />
<plant id="BL" display=".testBL.." group="NPS_BL" />
<plant id="LS" display="..testLS.." group="NPS_LS" />
</plants>
这里是我的代码:
ArrayList ActiveUserList = MyClass.GetGroupmemberList(DOMAIN, Username);
XDocument x = XDocument.Load(Server.MapPath(@"~\App_Data\location.xml"));
int index = ActiveUserList.Count;
ArrayList DropDownList = new ArrayList();
for (int i = 0; i < index; i++)
{
IEnumerable<XElement> att = from el in x.Descendants("plant")
where (string)el.Attribute("group") == ActiveUserList[i].ToString()
select el;
//????
}
如何使用找到的Xelements更新xml并使用它创建一个新的xml并将其加载到我的下拉列表中。
我想如果我的用户名在nps_db组中,nps_el只能看到:
<plants>
<plant id="DB" display=".testDB.." group="NPS_DB" />
<plant id="EL" display=".testEL.." group="NPS_EL" />
</plants>
答案 0 :(得分:1)
我没有获取匹配列表,而是删除了不匹配列表。看起来更直接以获得您想要的XML作为输出方式。
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/xml";
string xml = @"
<plants>
<plant id=""DB"" display="".testDB.."" group=""NPS_DB"" />
<plant id=""EL"" display="".testEL.."" group=""NPS_EL"" />
<plant id=""IN"" display=""..testIN."" group=""NPS_IN"" />
<plant id=""SB"" display="".testSB.."" group=""NPS_SB"" />
<plant id=""BL"" display="".testBL.."" group=""NPS_BL"" />
<plant id=""LS"" display=""..testLS.."" group=""NPS_LS"" />
</plants>
";
XDocument x = XDocument.Parse(xml);
string[] ActiveUserList = { "NPS_DB", "NPS_BL" };
var att = x.Descendants("plant").Where(el => !ActiveUserList.Contains(el.Attribute("group").Value));
att.Remove();
context.Response.Write(x.ToString());
}