Tag Archives: LINQ

XML Parsing cu LINQ

Aici este un exemplu rapida folosind LINQ pentru a analiza unele  XML şi a obţine la dulce, dulce atribute în aceasta.

Iată XML vreau pentru a analiza:

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

    <PageLayout nume = "xyzzy">
      <File>
        <Fila TabOrder = "1" TabLabel = "x" SharePointContentType = "a" AdditionalConstraints = "ac1" />
        <Fila TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </File>
    </PageLayout>

    <PageLayout nume = "xyzzy2">
      <File>
        <Fila TabOrder = "100" TabLabel = "x" SharePointContentType = "a" AdditionalConstraints = "ac1" />
        <Fila TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
        <Fila TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </File>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Vreau să construiască până unele file în timpul rulării de parsarea de mai sus.  Meu file depind de o machetă de pagină.  Dacă numele meu macheta de pagină este "xyzzy2", atunci vreau să obţineţi file 100, 101 şi 103 (filele din <PageLayout nume = "xyzzy2">).

Iată LINQ care nu este:

var allTabs =
              din p în
                  XElement.Parse(theXmlToParse).
                 
Elemente("PageLayouts").
                  Elemente("PageLayout")
              în cazul în care (p.attribute("Nume").Value.Equals("xyzzy2"))
              la m în p.Elements("File").Elemente("Fila")
              Selectaţi m;

          Results.text = şir.Gol;

          foreach (var aTab în allTabs)
          {
              Results.text =
                  "Ordinea tabulatorilor: " + aTab.Attribute("TabOrder").Valoarea + " |" +
                  "Fila eticheta: " + aTab.Attribute("TabLabel").Valoarea + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Valoarea + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Valoarea + "r";
          }

În cele de mai sus, Variabila "theXmlToParse" este o variabilă şir, dar puteţi utiliza sarcina() metoda pe un flux dacă vă place.

"Rezultatele" este o etichetă pe un formular web și când acest cod execută, se pare ca asta:

SNAGHTML11cd2e7c

Eu nu s-au elaborat cum să sorteze rezultatele încă, Deci, voi lăsa că pentru un post de viitor blog.

</scop>

Aboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin