Este es un ejemplo rápido mediante LINQ para analizar algunos XML y obtener en el dulce, dulce atributos en ella.
Aquí está el código XML desea analizar:
<?XML version = "1.0" Encoding = "utf-8" ?>
<DeafultConfigurationSets>
<PageLayouts><PageLayout nombre = "xyzzy">
<Fichas>
<Ficha TabOrder = "1" TabLabel = "x" SharePointContentType = "un" AdditionalConstraints = "ac1" />
<Ficha TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
</Fichas>
</PageLayout><PageLayout nombre = "xyzzy2">
<Fichas>
<Ficha TabOrder = "100" TabLabel = "x" SharePointContentType = "un" AdditionalConstraints = "ac1" />
<Ficha TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
<Ficha TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
</Fichas>
</PageLayout></PageLayouts>
</DeafultConfigurationSets>
Quiero acumular algunas fichas en tiempo de ejecución al analizar lo anterior. Mis fichas dependen de un diseño de página. Si el nombre del diseño de mi página es "xyzzy2", a continuación, quiero obtener fichas 100, 101 y 103 (las fichas <PageLayout nombre = "xyzzy2">).
Aquí está el LINQ que hace:
var allTabs =
de p en
XElement.Parse(theXmlToParse).
Elementos("PageLayouts").
Elementos("PageLayout")
donde (p.Attribute("nombre").Value.Equals("xyzzy2"))
m en p.Elements("Fichas").Elementos("Ficha")
Seleccione m;Results.Text = string.Vacío;
foreach (var aTab en allTabs)
{
Results.Text =
"El orden de tabulación: " + aTab.Attribute("TabOrder").Valor + " |" +
"Ficha etiqueta: " + aTab.Attribute("TabLabel").Valor + " | " +
"SharePointContentType: " + aTab.Attribute("SharePointContentType").Valor + " | " +
"AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Valor + "r";
}
En la anterior, la variable "theXmlToParse" es una variable de cadena, pero se puede utilizar la carga() método sobre una secuencia si te gusta.
"Resultados" son una etiqueta en un formulario web y cuando se ejecuta este código, este aspecto:
No he elaborado de cómo ordenar los resultados todavía, así que te dejo para un futuro blog.
</final>
Sígueme en Twitter en http://www.twitter.com/pagalvin