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:
Non ho funzionato come ordinare i risultati ancora, così potrai lasciare che per un post futuro.
</fine>
Seguimi su Twitter a http://www.twitter.com/pagalvin