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

Laat een antwoord achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *