Ето един бърз пример, с помощта на LINQ да анализира някои XML и да получите в сладко, сладки атрибути в него.
Ето искам да прави разбор на XML:
<?XML версия = "1.0" кодиране = "utf-8" ?>
<DeafultConfigurationSets>
<PageLayouts><PageLayout име = "xyzzy">
<Раздели>
<Раздел TabOrder = 1" TabLabel = "х" SharePointContentType = "_FITTED" AdditionalConstraints = "ac1" />
<Раздел TabOrder = "2" TabLabel = "y" SharePointContentType = b" AdditionalConstraints = "ac2" />
</Раздели>
</PageLayout><PageLayout име = "xyzzy2">
<Раздели>
<Раздел TabOrder = "100" TabLabel = "х" SharePointContentType = "_FITTED" 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 =
от p в
XElement.Parse(theXmlToParse).
Елементи("PageLayouts").
Елементи("PageLayout")
където (p.Attribute("име").Value.Equals("xyzzy2"))
от м в p.Elements("Раздели").Елементи("Раздел")
Изберете м;Results.Text = низ.Празен;
foreach (var надеждно хидроизолирана в 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