Kategoria: Archiwum: LINQ

Przetwarzanie XML z LINQ

Tutaj jest przykładem szybkie użycie LINQ do analizy niektórych  XML i get na słodkie, słodkie atrybuty tam.

Oto kod XML ma przeanalizować:

<?wersja pliku XML = "1.0" Kodowanie = "utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <Nazwa PageLayout = "xyzzy">
      <Tabulatory>
        <Karta TabOrder = "1" TabLabel = "x" SharePointContentType = "" AdditionalConstraints = "ac1" />
        <Karta TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "AC2 ułatwia wprowadzanie" />
      </Tabulatory>
    </PageLayout>

    <Nazwa PageLayout = "xyzzy2">
      <Tabulatory>
        <Karta TabOrder = "100" TabLabel = "x" SharePointContentType = "" AdditionalConstraints = "ac1" />
        <Karta TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "AC2 ułatwia wprowadzanie" />
        <Karta TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Tabulatory>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Chcę, aby stworzyć niektóre karty w czasie wykonywania przez analizowanie powyższego.  Moje karty zależą od układu strony.  Jeśli nazwa Mój układu strony jest "xyzzy2" następnie chcę uzyskać karty 100, 101 i 103 (kart <Nazwa PageLayout = "xyzzy2">).

Oto LINQ, który robi:

var allTabs =
              z p w
                  XElement.Parse(theXmlToParse).
                 
Elementy("PageLayouts").
                  Elementy("PageLayout")
              w przypadku gdy (p.Attribute("Nazwa").Value.Equals("xyzzy2"))
              od m w p.Elements("Tabs").Elementy("Karta")
              Wybierz m;

          Results.text = ciąg.Puste;

          foreach (var. aTab w allTabs)
          {
              Results.Text =
                  "Kolejność tabulatorów: " + aTab.Attribute("TabOrder").Wartość + " |" +
                  "Etykieta kartę: " + aTab.Attribute("TabLabel").Wartość + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Wartość + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Wartość + "r";
          }

W powyższym, Zmienna "theXmlToParse" jest zmienna typu string, jednak można użyć obciążenia() Metoda strumienia, jeśli chcesz.

"Wyniki" jest etykietą w formularzu sieci web i gdy ten kod jest wykonywany, wygląda to:

SNAGHTML11cd2e7c

Jeszcze nie pracowałem jak sortować wyniki jeszcze, tak pozostawiam że dla przyszłych blogu.

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin