Tag-Archive: LINQ

Analysieren von XML mit LINQ

Hier ist ein kurzes Beispiel einige analysieren mit LINQ  XML und steigen an der süßen, süße Attribute darin.

Hier ist das XML analysieren möchte:

<?XML Version = "1.0" Encoding = "Utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <Pagelayout-Name = "Xyzzy">
      <Registerkarten>
        <Registerkarte TabOrder = "1" TabLabel = "X" SharePointContentType = "a" AdditionalConstraints = "ac1" />
        <Registerkarte TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Registerkarten>
    </PageLayout>

    <PageLayout-Name = "xyzzy2">
      <Registerkarten>
        <Registerkarte TabOrder = "100" TabLabel = "X" SharePointContentType = "a" AdditionalConstraints = "ac1" />
        <Registerkarte TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
        <Registerkarte TabOrder = "103" TabLabel = "Z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Registerkarten>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Ich möchte einige Registerkarten zur Laufzeit von der Analyse der oben genannten aufzubauen.  Meine Tabs hängt ein Seitenlayout.  Wenn meine Seitenlayout-Namen "xyzzy2" ist, dann ich Tabs will 100, 101 und 103 (die Registerkarten im <PageLayout-Name = "xyzzy2">).

Hier ist die LINQ, die es tut:

Var AllTabs =
              von p in
                  XElement.Parse(theXmlToParse).
                 
Elemente("PageLayouts").
                  Elemente("PageLayout")
              wo (p.Attribute("Name").Value.Equals("xyzzy2"))
              von m in p.Elements("Tabs").Elemente("Tab")
              Wählen Sie m;

          Results.Text = Zeichenfolge.Leer;

          foreach (Var aTab in allTabs)
          {
              Results.Text =
                  "Tab-Reihenfolge: " + aTab.Attribute("TabOrder").Wert + " |" +
                  "Registerkarte Beschriftung: " + aTab.Attribute("TabLabel").Wert + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Wert + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Wert + "r";
          }

In den oben genannten, die Variable "TheXmlToParse" ist eine String-variable, Sie können jedoch die Belastung() Methode auf einen Stream, wenn du magst.

"Ergebnisse" ist eine Bezeichnung für ein Web Form, und wenn dieser Code ausgeführt wird, Es sieht wie folgt aus:

SNAGHTML11cd2e7c

Ich habe nicht gearbeitet, wie man die Ergebnisse noch sortieren, also lasse ich das für eine zukünftige Blog-post.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin