Розбору XML з LINQ

Ось невеликий приклад використання LINQ проаналізувати деякі  XML і отримати в солодкий, солодкий атрибути в ньому.

Ось це я хочу розбору XML:

<?XML версія = "1,0" кодування = "utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <PageLayout назва = "xyzzy">
      <Вкладки>
        <"Вкладка" TabOrder = "1" TabLabel = "x" SharePointContentType = "за" AdditionalConstraints = "ac1" />
        <"Вкладка" TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Вкладки>
    </PageLayout>

    <PageLayout назва = "xyzzy2">
      <Вкладки>
        <"Вкладка" TabOrder = "100" TabLabel = "x" SharePointContentType = "за" 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 =
              від ПР в
                  XElement.Parse(theXmlToParse).
                 
Елементи("PageLayouts").
                  Елементи("PageLayout")
              де (p.Attribute("ім'я").Value.Equals("xyzzy2"))
              від м у p.Elements("Вкладки").Елементи("Вкладку")
              вибрати м;

          Results.Text = рядок.Порожній;

          foreach (VAR aTab в 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

Дати відповідь

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *