Aquí está un exemplo rápido usando LINQ para analizar algúns XML e chegar ao doce, atributos doces nel.
Aquí está o XML Quero analizar:
<?xml version="1.0" encoding="utf-8" ?>
<DeafultConfigurationSets>
<PageLayouts><PageLayout name="xyzzy">
<Tabs>
<Tab TabOrder="1" TabLabel="x" SharePointContentType="a" AdditionalConstraints="ac1"/>
<Tab TabOrder="2" TabLabel="y" SharePointContentType="b" AdditionalConstraints="ac2"/>
</Tabs>
</PageLayout><PageLayout name="xyzzy2">
<Tabs>
<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"/>
</Tabs>
</PageLayout></PageLayouts>
</DeafultConfigurationSets>
Quero construír algunhas guías en tempo de execución por analizar o anterior. Os meus guías depender dun esquema de páxina. O nome do meu deseño da páxina é "xyzzy2", entón quero comezar guías 100, 101 e 103 (as guías <PageLayout name = "xyzzy2">).
Aquí está o LINQ que fai:
var allTabs =
desde p, en
XElement.Parse(theXmlToParse).
Elementos("PageLayouts").
Elementos("PageLayout")
onde (p.Attribute("name").Value.Equals("xyzzy2"))
m de p.Elements("Tabs").Elementos("Tab")
seleccionar m;Results.Text = string.Empty;
foreach (var Atab en allTabs)
{
Results.Text =
"Tab Order: " + aTab.Attribute("TabOrder").Valor + " |" +
"Tab Label: " + aTab.Attribute("TabLabel").Valor + " | " +
"SharePointContentType: " + aTab.Attribute("SharePointContentType").Valor + " | " +
"AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Valor + "\r";
}
No exemplo anterior,, a variable "theXmlToParse" é unha variable de secuencia, pero pode utilizar a carga() método nun córrego, se desexa.
"Resultados" é unha etiqueta nun formulario web e, cando este código é executado, parece que esta:
Non teño a traballar para fóra como para clasificar os resultados aínda, entón eu vou deixar isto para un futuro post no blog.
</final>
Siga-me no Twitter http://www.twitter.com/pagalvin