Tag Archives: LINQ

Анализиране на XML с LINQ

Ето един бърз пример, с помощта на LINQ да анализира някои  XML и да получите в сладко, сладки атрибути в него.

Ето искам да прави разбор на XML:

<?XML версия = "1.0" кодиране = "utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <PageLayout име = "xyzzy">
      <Раздели>
        <Раздел TabOrder = 1" TabLabel = "х" SharePointContentType = "_FITTED" AdditionalConstraints = "ac1" />
        <Раздел TabOrder = "2" TabLabel = "y" SharePointContentType = b" AdditionalConstraints = "ac2" />
      </Раздели>
    </PageLayout>

    <PageLayout име = "xyzzy2">
      <Раздели>
        <Раздел TabOrder = "100" TabLabel = "х" SharePointContentType = "_FITTED" AdditionalConstraints = "ac1" />
        <Раздел TabOrder = "101" TabLabel = "y" SharePointContentType = b" AdditionalConstraints = "ac2" />
        <Раздел TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Раздели>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Искам да изградят някои раздели по време на изпълнение от анализа по-горе.  Раздели зависят от оформлението на страница.  Ако моята страница оформление име е "xyzzy2", тогава искам да се раздели 100, 101 и 103 (разделите в <PageLayout име = "xyzzy2">).

Ето LINQ, който го прави:

var allTabs =
              от p в
                  XElement.Parse(theXmlToParse).
                 
Елементи("PageLayouts").
                  Елементи("PageLayout")
              където (p.Attribute("име").Value.Equals("xyzzy2"))
              от м в p.Elements("Раздели").Елементи("Раздел")
              Изберете м;

          Results.Text = низ.Празен;

          foreach (var надеждно хидроизолирана в allTabs)
          {
              Results.Text =
                  "Раздела ред: " + aTab.Attribute("TabOrder").Стойност + " |" +
                  "Етикет на раздел: " + aTab.Attribute("TabLabel").Стойност + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Стойност + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Стойност + "r";
          }

В по-горе, променливата "theXmlToParse" е низова променлива, но можете да използвате натоварване() метод на един поток, ако ви харесва.

"Резултати" е етикет на уеб форма и когато този код изпълнява, Тя изглежда така:

SNAGHTML11cd2e7c

Не съм работил, как да сортирате резултатите още, така че аз ще оставя това за бъдеща блог пост.

</край>

Абонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin