Menghuraikan XML dengan LINQ

Berikut adalah contoh yang cepat menggunakan LINQ untuk menghuraikan beberapa  XML dan mendapat sekurang-manis, sifat-sifat manis di dalamnya.

Berikut adalah XML yang ingin saya menghuraikan:

<?versi XML = "1.0" pengekodan = "utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <Nama PageLayout = "xyzzy">
      <Tabs>
        <Tab TabOrder = "1" TabLabel = "x" SharePointContentType = "a" AdditionalConstraints = "ac1" />
        <Tab TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Tabs>
    </PageLayout>

    <Nama PageLayout = "xyzzy2">
      <Tabs>
        <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" />
      </Tabs>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Saya mahu membina beberapa tab di runtime oleh menghuraikan di atas.  Tab saya bergantung kepada susun atur laman.  Jika nama saya layout Laman "xyzzy2" maka saya ingin mendapatkan Tab 100, 101 dan 103 (Tab yang di <Nama PageLayout = "xyzzy2">).

Inilah LINQ yang ia tidak:

VAR allTabs =
              dari p di
                  XElement.Parse(theXmlToParse).
                 
Unsur-unsur("PageLayouts").
                  Unsur-unsur("PageLayout")
              di mana (p.Attribute("nama").Value.Equals("xyzzy2"))
              dari m di p.Elements("Tab").Unsur-unsur("Tab")
              Pilih m;

          Results.Text = tali. Kosong;

          foreach (VAR aTab di allTabs)
          {
              Results.Text =
                  "Tab perintah: " + aTab.Attribute("TabOrder").Nilai + " |" +
                  "Tab Label: " + aTab.Attribute("TabLabel").Nilai + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Nilai + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Nilai + "r";
          }

Di atas, pembolehubah "theXmlToParse" adalah pembolehubah rentetan, tetapi anda boleh menggunakan beban() Kaedah aliran jika anda suka.

"Keputusan" adalah label pada satu borang web dan apabila melaksanakan kod ini, ia kelihatan seperti ini:

SNAGHTML11cd2e7c

Saya belum bekerja bagaimana untuk menyusun keputusan lagi, Jadi saya akan meninggalkan bahawa posting blog masa depan.

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Tinggalkan Jawapan

alamat e-mel anda tidak akan diterbitkan. Ruangan yang diperlukan ditanda *