我有以下XML:在xml中查找具有特定屬性的元素?
<?xml version="1.0" encoding="utf-8" ?>
<layout>
<menu name="Employees" url="Employees.aspx" admin="0">
</menu>
<menu name="Projects" url="Projects.aspx" admin="1">
</menu>
<menu name="Cases" url="Cases.aspx" admin="1">
</menu>
<menu name="CaseView" url="CaseView.aspx" admin="1" hidden="1" parent="Projects">
</menu>
<menu name="Management" url="" admin="1">
<item name="Groups" url="Groups.aspx" admin="1" parent="Management"/>
<item name="Statuses" url="Statuses.aspx" admin="1"/>
</menu>
</layout>
這裏我有CaseView和組都有一個「父」屬性。
目前我重複這樣的:
IEnumerable<XElement> menus =
doc.Element("layout").Elements();
foreach (var menu in menus)
{
string name = menu.Attribute("name").Value;
string active = "";
string url = menu.Attribute("url").Value;
if(activePage == url)
{
active = "class=\"active\"";
}
...
我要的是:
if(activePage == url || ActiveIsChildOf(name, activePage))
{
active = "class=\"active\"";
}
本質上這種方法需要找到如果與activePage元素作爲其url屬性存在。如果有,請查看它是否具有父屬性;如果是這樣,請檢查父==的名稱。
有沒有某種方法來查找元素的屬性或東西? 例如:
XElement e = doc.GetByAttribute("url",activePage)
感謝
Niice不知道這一點。對我來說,LINQ和Lambdas的waaaaaay比XPath更神祕,但是因爲他在上面的例子中使用了它,所以我猜這對他來說可能是一個更簡單的解決方案。 – phadaphunk 2013-02-19 17:15:25
這將返回所有或只'元素'元素我也有'菜單'的元素。 – jmasterx 2013-02-19 17:20:07
第二個最後一個只找到屬性url =「activePage」類型的「item」類型的第一個元素,第一個元素的類型爲「item」,屬性url =「activePage」,最後一個是任何類型的第一個元素具有屬性activepage – 2013-02-19 17:38:25