Tag Archives: LINQ

Analyse av XML med LINQ

Her er en rask eksempel bruke LINQ til å analysere noen  XML- og gå på søte, Sweet attributter deri.

Her er jeg vil analysere XML:

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

    <Navn på PageLayout = "xyzzy">
      <Faner>
        <Kategorien TabOrder = "1" TabLabel = "x" SharePointContentType = "a" AdditionalConstraints = "ac1" />
        <Kategorien TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Faner>
    </PageLayout>

    <Navn på PageLayout = "xyzzy2">
      <Faner>
        <Kategorien TabOrder = "100" TabLabel = "x" SharePointContentType = "a" AdditionalConstraints = "ac1" />
        <Kategorien TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
        <Kategorien TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Faner>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Jeg ønsker å bygge opp noen kategorier under kjøring ved analysering ovenfor.  Mine fliker, er avhengig av et sideoppsett.  Hvis min sideoppsett-navnet er "xyzzy2" deretter vil jeg få tabulatorer 100, 101 og 103 (kategoriene i <Navn på PageLayout = "xyzzy2">).

Her er LINQ som gjør det:

var allTabs =
              fra p i
                  XElement.Parse(theXmlToParse).
                 
Elementer("PageLayouts").
                  Elementer("PageLayout")
              der (p.Attribute("navn").Value.Equals("xyzzy2"))
              fra m i p.Elements("Tabs").Elementer("Tab")
              Velg m;

          Results.Text = streng.Tom;

          foreach (var aTab i allTabs)
          {
              Results.Text = (likhetstegn)
                  "Tabulatorrekkefølgen: " + aTab.Attribute("TabOrder").Verdi + " |" +
                  "Kategorietikett: " + aTab.Attribute("TabLabel").Verdi + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Verdi + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Verdi + "r";
          }

I de ovennevnte, variabelen "theXmlToParse" er en strengvariabel, men du kan bruke belastningen() metoden en dataflyt, hvis du liker.

"Resultater" er en etikett på et webskjema, og når denne koden utføres, Det ser ut som dette:

SNAGHTML11cd2e7c

Jeg ikke har jobbet ut hvordan du kan sortere resultatene ennå, så jeg vil la det for en fremtidig blogginnlegg.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin