archivi categoria: LINQ

L'analisi XML con LINQ

Ecco un rapido esempio utilizzando LINQ per analizzare alcuni  XML e ottenere presso il dolce, dolce in esso attribuisce.

Ecco il codice XML che voglio analizzare:

<?XML version = "1.0" Encoding = "utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <PageLayout nome = "xyzzy">
      <Schede>
        <Scheda TabOrder = "1" TabLabel = "x" SharePointContentType = "un" AdditionalConstraints = "ac1" />
        <Scheda TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Schede>
    </PageLayout>

    <PageLayout name = "xyzzy2">
      <Schede>
        <Scheda TabOrder = "100" TabLabel = "x" SharePointContentType = "un" AdditionalConstraints = "ac1" />
        <Scheda TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
        <Scheda TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Schede>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Voglio costruire alcune schede in fase di esecuzione mediante l'analisi di cui sopra.  Mie schede dipendono da un layout di pagina.  Se nome del mio layout di pagina è "xyzzy2" quindi voglio ottenere schede 100, 101 e 103 (le schede in <PageLayout name = "xyzzy2">).

Ecco il LINQ che lo fa:

var allTabs =
              from p in
                  XElement(theXmlToParse).
                 
Elementi("PageLayouts").
                  Elementi("PageLayout")
              dove (p.Attribute("nome").Value.Equals("xyzzy2"))
              da m. in p.Elements("Schede").Elementi("Scheda")
              Selezionare m;

          Results.Text = string.Vuoto;

          foreach (var aTab in allTabs)
          {
              = Results.Text
                  "Ordine di tabulazione: " + aTab.Attribute("TabOrder").Valore + " |" +
                  "Scheda Label: " + aTab.Attribute("TabLabel").Valore + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Valore + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Valore + "r";
          }

In precedenza, la variabile "theXmlToParse" è una variabile di stringa, ma è possibile utilizzare il carico() Metodo su un flusso se ti piace.

«Risultati» sono un'etichetta su un web form e quando questo codice viene eseguito, sembra che questo:

SNAGHTML11cd2e7c

Non ho funzionato come ordinare i risultati ancora, così potrai lasciare che per un post futuro.

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin