Kategori Arkiv: LINQ

Parsing af XML med LINQ

Her er et hurtigt eksempel ved hjælp af LINQ til at parse nogle  XML- og stå ved søde, Sweet attributter deri.

Her er det XML-jeg ønsker at analysere:

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

    <PageLayout navn = "xyzzy">
      <Faner>
        <Under fanen TabOrder = "1" TabLabel = "x" SharePointContentType = "en" AdditionalConstraints = "ac1" />
        <Under fanen TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Faner>
    </PageLayout>

    <PageLayout name = "xyzzy2">
      <Faner>
        <Under fanen TabOrder = "100" TabLabel = "x" SharePointContentType = "en" AdditionalConstraints = "ac1" />
        <Under fanen TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
        <Under fanen TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Faner>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Jeg ønsker at opbygge nogle faner på kørselstidspunktet ved parsing af ovenstående.  Min faner afhænger af et sidelayout.  Hvis min sidelayout navn er "xyzzy2" så vil jeg få faner 100, 101 og 103 (fanerne i <PageLayout name = "xyzzy2">).

Her er den LINQ, der gør det:

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

          Results.Text = streng.Tom;

          foreach (var aTab i allTabs)
          {
              Results.Text =
                  "Tabulatorrækkefølge: " + aTab.Attribute("TabOrder").Værdi + " |" +
                  "Fanen etiket: " + aTab.Attribute("TabLabel").Værdi + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Værdi + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Værdi + "r";
          }

I ovenstående, variablen "theXmlToParse" er en strengvariabel, men du kan bruge belastningen() metode på en stream, hvis du kan lide.

"Resultater" er en etiket på en web-formular, og når denne kode udfører, Det ser sådan ud:

SNAGHTML11cd2e7c

Jeg har ikke regnet ud, hvordan man sortere resultaterne endnu, så jeg vil overlade til en fremtidig blog-indlæg.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin