Синтаксический анализ 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 =
              от p в
                  XElement.Parse(theXmlToParse).
                 
Элементы(«PageLayouts»).
                  Элементы(«PageLayout»)
              где (p.Attribute(«имя»).Value.Equals(«xyzzy2»))
              от м в p.Elements(«Вкладки»).Элементы(«Закладка»)
              Выберите m;

          Results.text = строка.Пустой;

          по каждому элементу (var aTab в allTabs)
          {
              Results.Text =
                  "Порядок табуляции: " + aTab.Attribute(«TabOrder»).Значение + " |" +
                  "Вкладку ярлык: " + aTab.Attribute(«TabLabel»).Значение + " | " +
                  "SharePointContentType: " + aTab.Attribute(«SharePointContentType»).Значение + " | " +
                  "AdditionalConstraints: " + aTab.Attribute(«AdditionalConstraints»).Значение + «r»;
          }

В приведенном выше, Строковая переменная является переменная «theXmlToParse», но вы можете использовать нагрузки() Метод потока, если вам нравится.

«Результаты» — лейбл в веб-форме и когда этот код выполняется, Он выглядит следующим образом:

SNAGHTML11cd2e7c

Я еще не работал, как сортировать результаты еще не, так что я оставлю это для будущего блога.

</конец>

Подписаться на мой блог.

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Оставь ответ

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