Archivo de la categoría: LINQ

Analizar XML con LINQ

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:

SNAGHTML11cd2e7c

No he elaborado de cómo ordenar los resultados todavía, así que te dejo para un futuro blog.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin