Вось невялікі прыклад выкарыстання LINQ для разбору некаторых XML, і атрымаць на салодкае, салодкія атрыбуты ў ім.
Вось XML я хачу, каб разабраць:
<?xml version="1.0" encoding="utf-8" ?>
<DeafultConfigurationSets>
<PageLayouts><PageLayout name="xyzzy">
<Ўкладкі>
<Tab TabOrder="1" TabLabel="x" SharePointContentType="a" AdditionalConstraints="ac1"/>
<Tab TabOrder="2" TabLabel="y" SharePointContentType="b" AdditionalConstraints="ac2"/>
</Ўкладкі>
</PageLayout><PageLayout name="xyzzy2">
<Ўкладкі>
<Tab TabOrder="100" TabLabel="x" SharePointContentType="a" AdditionalConstraints="ac1"/>
<Tab TabOrder="101" TabLabel="y" SharePointContentType="b" AdditionalConstraints="ac2"/>
<Tab TabOrder="103" TabLabel="z" SharePointContentType="c" AdditionalConstraints="ac3"/>
</Ўкладкі>
</PageLayout></PageLayouts>
</DeafultConfigurationSets>
Я хачу стварыць некалькі ўкладак падчас выканання разбору вышэй. Мой ўкладак залежыць ад макета старонкі. Калі маё імя макета старонкі з'яўляецца "xyzzy2", то я хачу, каб ўкладкі 100, 101 і 103 (ўкладках <PageLayout імя = "xyzzy2">).
Вось LINQ, што робіць яго:
быў allTabs =
ад р
XElement.Parse(theXmlToParse).
Элементы("PageLayouts").
Элементы("PageLayout")
дзе (p.Attribute("name").Value.Equals("xyzzy2"))
ад м. p.Elements("Tabs").Элементы("Tab")
Вылучыце м;Results.Text = string.Empty;
Еогеасп (ATAB была allTabs)
{
Results.Text =
"Tab Order: " + aTab.Attribute("TabOrder").Значэнне + " |" +
"Tab Label: " + aTab.Attribute("TabLabel").Значэнне + " | " +
"SharePointContentType: " + aTab.Attribute("SharePointContentType").Значэнне + " | " +
"AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Значэнне + "\r";
}
У прыведзеным вышэй, Пераменная "theXmlToParse" з'яўляецца радком зменнай, але вы можаце выкарыстоўваць нагрузкі() метад на паток, калі хочаце.
"Вынікі" з'яўляецца этыкетка на вэб-форму, і калі гэты код выконваецца, гэта выглядае так:
Я не працаваў, як сартаваць вынікі яшчэ, так што я пакіну гэта для будучага блога.
</канец>
Выконвайце за мной на Twitter у http://www.twitter.com/pagalvin