Categorie Archieven: LINQ

Parsing XML met LINQ

Hier is een snelle voorbeeld met LINQ to parse sommige  XML en krijgen op de zoete, Sweet attributen daarin.

Hier is de XML ik wilt parseren:

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

    <PageLayout naam = "xyzzy">
      <Tabbladen>
        <Tabvolgorde tab = "1" TabLabel = "x" SharePointContentType = "een" AdditionalConstraints = "ac1" />
        <Tabvolgorde tab = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Tabbladen>
    </PageLayout>

    <PageLayout naam = "xyzzy2">
      <Tabbladen>
        <Tabvolgorde tab = "100" TabLabel = "x" SharePointContentType = "een" AdditionalConstraints = "ac1" />
        <Tabvolgorde tab = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
        <Tabvolgorde tab = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Tabbladen>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Ik wil bouwen sommige tabbladen in runtime door de bovenstaande parseren.  Mijn tabbladen afhangen van een pagina-indeling.  Als mijn pagina-indeling de naam is "xyzzy2" dan wil ik krijgen tabbladen 100, 101 en 103 (de tabbladen in <PageLayout naam = "xyzzy2">).

Hier is de LINQ dat het doet:

var allTabs =
              van p in
                  XElement.Parse(theXmlToParse).
                 
Elementen("PageLayouts").
                  Elementen("PageLayout")
              waar (p.Attribute("naam").Value.equals("xyzzy2"))
              van m in p.Elements("Tabs").Elementen("Tab")
              Selecteer m;

          Results.text = string.Leeg;

          foreach (var aTab in allTabs)
          {
              Results.Text =
                  "Tabvolgorde: " + aTab.Attribute("Tabvolgorde").Waarde + " |" +
                  "Tab Label: " + aTab.Attribute("TabLabel").Waarde + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Waarde + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Waarde + "r";
          }

In het bovenstaande, de variabele "theXmlToParse" is een string-variabele, maar u kunt de belasting() methode op een stroom als je.

"Resultaten" is een label op een webformulier en wanneer deze code wordt uitgevoerd, het ziet er als volgt:

SNAGHTML11cd2e7c

Ik heb niet gewerkt uit hoe de resultaten nog sorteren, dus ik dat voor een toekomstig blogpost laat.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin