Aqui está um exemplo rápido usando LINQ para analisar alguns XML e receber no doce, doce atributos nele.
Aqui está o XML eu quero analisar:
<?XML version = "1.0" Encoding = "utf-8" ?>
<DeafultConfigurationSets>
<PageLayouts><PageLayout nome = "xyzzy">
<Guias>
<Guia TabOrder = "1" TabLabel = "x" SharePointContentType = "a" AdditionalConstraints = "ac1" />
<Guia TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
</Guias>
</PageLayout><PageLayout nome = "xyzzy2">
<Guias>
<Guia TabOrder = "100" TabLabel = "x" SharePointContentType = "a" AdditionalConstraints = "ac1" />
<Guia TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
<Guia TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
</Guias>
</PageLayout></PageLayouts>
</DeafultConfigurationSets>
Eu quero construir algumas abas em tempo de execução analisando o acima exposto. Meus guias dependem de um layout de página. Se o nome do meu layout da página é "xyzzy2" deseja obter guias 100, 101 and 103 (guias <PageLayout nome = "xyzzy2">).
Aqui está o LINQ que faz isso:
var allTabs =
de p em
XElement(theXmlToParse).
Elementos("PageLayouts").
Elementos("PageLayout")
onde (p.Attribute("nome").Value.Equals("xyzzy2"))
de m em p.Elements("Guias").Elementos("Guia")
Selecione m;Results.text = string.Vazio;
foreach (var aTab em allTabs)
{
Results.Text =
"Ordem de tabulação: " + aTab.Attribute("TabOrder").Valor + " |" +
"Tab Label: " + aTab.Attribute("TabLabel").Valor + " | " +
"SharePointContentType: " + aTab.Attribute("SharePointContentType").Valor + " | " +
"AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Valor + "r";
}
No exemplo acima, a variável "theXmlToParse" é uma variável de Cadeia de caracteres, mas você pode usar a carga() Método em um fluxo se você gosta de.
"Resultados" são um rótulo em um formulário da web e quando esse código é executado, Ele se parece com isso:
Eu não tenho trabalhado como classificar os resultados ainda, então vou deixar isso para um borne futuro do blogue.
</fim>
Siga-me no Twitter em http://www.twitter.com/pagalvin