Hier is een snelle voorbeeld met LINQ to parse sommige XML en krijgen op de zoete, Sweet attributen daarin.
Hier is de XML ik wilt parseren:
<?XML version = "1.0" encoding = "utf-8" ?>
<DeafultConfigurationSets>
<PageLayouts><PageLayout naam = "xyzzy">
<Tabbladen>
<Tabvolgorde tab = "1" TabLabel = "x" SharePointContentType = "een" AdditionalConstraints = "ac1" />
<Tabvolgorde tab = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
</Tabbladen>
</PageLayout><PageLayout naam = "xyzzy2">
<Tabbladen>
<Tabvolgorde tab = "100" TabLabel = "x" SharePointContentType = "een" AdditionalConstraints = "ac1" />
<Tabvolgorde tab = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
<Tabvolgorde tab = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
</Tabbladen>
</PageLayout></PageLayouts>
</DeafultConfigurationSets>
Ik wil bouwen sommige tabbladen in runtime door de bovenstaande parseren. Mijn tabbladen afhangen van een pagina-indeling. Als mijn pagina-indeling de naam is "xyzzy2" dan wil ik krijgen tabbladen 100, 101 en 103 (de tabbladen in <PageLayout naam = "xyzzy2">).
Hier is de LINQ dat het doet:
var allTabs =
van p in
XElement.Parse(theXmlToParse).
Elementen("PageLayouts").
Elementen("PageLayout")
waar (p.Attribute("naam").Value.equals("xyzzy2"))
van m in p.Elements("Tabs").Elementen("Tab")
Selecteer m;Results.text = string.Leeg;
foreach (var aTab in allTabs)
{
Results.Text =
"Tabvolgorde: " + aTab.Attribute("Tabvolgorde").Waarde + " |" +
"Tab Label: " + aTab.Attribute("TabLabel").Waarde + " | " +
"SharePointContentType: " + aTab.Attribute("SharePointContentType").Waarde + " | " +
"AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Waarde + "r";
}
In het bovenstaande, de variabele "theXmlToParse" is een string-variabele, maar u kunt de belasting() methode op een stroom als je.
"Resultaten" is een label op een webformulier en wanneer deze code wordt uitgevoerd, het ziet er als volgt:
Ik heb niet gewerkt uit hoe de resultaten nog sorteren, dus ik dat voor een toekomstig blogpost laat.
</einde>
Volg mij op Twitter op http://www.twitter.com/pagalvin