Ось невеликий приклад використання LINQ проаналізувати деякі XML і отримати в солодкий, солодкий атрибути в ньому.
Ось це я хочу розбору XML:
<?XML версія = "1,0" кодування = "utf-8" ?>
<DeafultConfigurationSets>
<PageLayouts><PageLayout назва = "xyzzy">
<Вкладки>
<"Вкладка" TabOrder = "1" TabLabel = "x" SharePointContentType = "за" AdditionalConstraints = "ac1" />
<"Вкладка" TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
</Вкладки>
</PageLayout><PageLayout назва = "xyzzy2">
<Вкладки>
<"Вкладка" TabOrder = "100" TabLabel = "x" SharePointContentType = "за" AdditionalConstraints = "ac1" />
<"Вкладка" TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
<"Вкладка" TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
</Вкладки>
</PageLayout></PageLayouts>
</DeafultConfigurationSets>
Я хочу, щоб побудувати деякі вкладок під час роботи з розборі вище. Мій вкладки залежати від макет сторінки. Якщо ім'я мого макет сторінки "xyzzy2", то я хочу отримати вкладки 100, 101 і 103 (вкладки у <PageLayout назва = "xyzzy2">).
Ось LINQ, що робить його:
VAR allTabs =
від ПР в
XElement.Parse(theXmlToParse).
Елементи("PageLayouts").
Елементи("PageLayout")
де (p.Attribute("ім'я").Value.Equals("xyzzy2"))
від м у p.Elements("Вкладки").Елементи("Вкладку")
вибрати м;Results.Text = рядок.Порожній;
foreach (VAR aTab в allTabs)
{
Results.Text =
"Послідовність переходу: " + aTab.Attribute("TabOrder").Значення + " |" +
"Мітку вкладки: " + aTab.Attribute("TabLabel").Значення + " | " +
"SharePointContentType: " + aTab.Attribute("SharePointContentType").Значення + " | " +
"AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Значення + "r";
}
У вище, змінна "theXmlToParse" — це змінна рядок, але ви можете використовувати навантаження() метод передати потоком, якщо вам подобається.
"Результати" є підпис у веб-форму, і коли цей код виконує, це виглядає так:
Я ще не працював, як сортувати результати ще, так що я залишу це для майбутнього блогу.
</кінець>
Йди за мною на Twitter в http://www.twitter.com/pagalvin