Tag Archives: LINQ

Разбор XML з дапамогай LINQ

Вось невялікі прыклад выкарыстання LINQ для разбору некаторых  XML, і атрымаць на салодкае, салодкія атрыбуты ў ім.

Вось XML я хачу, каб разабраць:

<?xml version="1.0" encoding="utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <PageLayout name="xyzzy">
      <Ўкладкі>
        <Tab TabOrder="1" TabLabel="x" SharePointContentType="a" AdditionalConstraints="ac1"/>
        <Tab TabOrder="2" TabLabel="y" SharePointContentType="b" AdditionalConstraints="ac2"/>
      </Ўкладкі>
    </PageLayout>

    <PageLayout name="xyzzy2">
      <Ўкладкі>
        <Tab TabOrder="100" TabLabel="x" SharePointContentType="a" AdditionalConstraints="ac1"/>
        <Tab TabOrder="101" TabLabel="y" SharePointContentType="b" AdditionalConstraints="ac2"/>
        <Tab TabOrder="103" TabLabel="z" SharePointContentType="c" AdditionalConstraints="ac3"/>
      </Ўкладкі>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Я хачу стварыць некалькі ўкладак падчас выканання разбору вышэй.  Мой ўкладак залежыць ад макета старонкі.  Калі маё імя макета старонкі з'яўляецца "xyzzy2", то я хачу, каб ўкладкі 100, 101 і 103 (ўкладках <PageLayout імя = "xyzzy2">).

Вось LINQ, што робіць яго:

быў allTabs =
              ад р
                  XElement.Parse(theXmlToParse).
                 
Элементы("PageLayouts").
                  Элементы("PageLayout")
              дзе (p.Attribute("name").Value.Equals("xyzzy2"))
              ад м. p.Elements("Tabs").Элементы("Tab")
              Вылучыце м;

          Results.Text = string.Empty;

          Еогеасп (ATAB была allTabs)
          {
              Results.Text =
                  "Tab Order: " + aTab.Attribute("TabOrder").Значэнне + " |" +
                  "Tab Label: " + aTab.Attribute("TabLabel").Значэнне + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Значэнне + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Значэнне + "\r";
          }

У прыведзеным вышэй, Пераменная "theXmlToParse" з'яўляецца радком зменнай, але вы можаце выкарыстоўваць нагрузкі() метад на паток, калі хочаце.

"Вынікі" з'яўляецца этыкетка на вэб-форму, і калі гэты код выконваецца, гэта выглядае так:

SNAGHTML11cd2e7c

Я не працаваў, як сартаваць вынікі яшчэ, так што я пакіну гэта для будучага блога.

</канец>

Падпісацца на мой блог.

Выконвайце за мной на Twitter у http://www.twitter.com/pagalvin