Kategori Arkiv: LINQ

Parsning av XML med LINQ

Här är en snabb exempel med LINQ för att tolka vissa  XML- och få vid söta, söt attribut däri.

Här är jag vill parsa XML:

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

    <PageLayout namn = "xyzzy">
      <Flikar>
        <Fliken TabOrder = "1" TabLabel = "x" SharePointContentType = "en" AdditionalConstraints = "ac1" />
        <Fliken TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Flikar>
    </PageLayout>

    <PageLayout namn = "xyzzy2">
      <Flikar>
        <Fliken TabOrder = "100" TabLabel = "x" SharePointContentType = "en" AdditionalConstraints = "ac1" />
        <Fliken TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
        <Fliken TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Flikar>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Jag vill bygga upp vissa flikar under körning av tolkning av ovanstående.  Mina flikar är beroende av en sidlayout.  Om min sida layoutens namn är "xyzzy2" då jag vill få flikar 100, 101 och 103 (flikarna i <PageLayout namn = "xyzzy2">).

Här är LINQ som gör det:

var allTabs =
              från p i
                  XElement.Parse(theXmlToParse).
                 
Element("PageLayouts").
                  Element("PageLayout")
              där (p.Attribute("namn").Value.Equals("xyzzy2"))
              från m i p.Elements("Flikar").Element("Tab")
              Välj m;

          Results.text = sträng.Tom;

          foreach (var aTab i allTabs)
          {
              Results.text =
                  "Tabbordning: " + aTab.Attribute("TabOrder").Värde + " |" +
                  "Fliken etikett: " + aTab.Attribute("TabLabel").Värde + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Värde + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Värde + "r";
          }

I ovanstående, variabeln "theXmlToParse" är en strängvariabel, men du kan använda lasten() metoden på en dataström om du gillar.

"Resultat" är en etikett på ett webbformulär och när denna kod körs, Det ser ut så här:

SNAGHTML11cd2e7c

Jag har inte räknat ut hur du sorterar resultaten ännu, så jag lämnar som för ett framtida blogginlägg.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin