Etiket Arşivleri: LINQ

LINQ ile xml ayrıştırma

İşte bazı ayrıştırmak için LINQ kullanarak hızlı bir örnek  XML ve tatlı, al, tatlı orada özellikleri.

İşte ayrıştırmak istediğiniz XML:

<?XML sürüm "1.0 =" kodlama = "utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <PageLayout adı "xyzzy" =>
      <Sekmeleri>
        <Sekme TabOrder = "1" TabLabel = "x" SharePointContentType = "bir" AdditionalConstraints "ac1" = />
        <Sekme TabOrder "2 =" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints "ac2" = />
      </Sekmeleri>
    </PageLayout>

    <PageLayout adı "xyzzy2" =>
      <Sekmeleri>
        <Sekme TabOrder = "100" TabLabel = "x" SharePointContentType = "bir" AdditionalConstraints "ac1" = />
        <Sekme TabOrder "101 =" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints "ac2" = />
        <Sekme TabOrder "103 =" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints "ac3" = />
      </Sekmeleri>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Ben yukarıda ayrıştırma tarafından çalışma zamanında bazı sekmeler oluşturmak istiyorum.  Benim sekmeleri sayfa düzeni bağlıdır.  Sonra benim sayfa düzeni'nın adı "xyzzy2" ise sekmeleri almak istiyorum 100, 101 ve 103 (sekmeleri <PageLayout adı "xyzzy2" =>).

İşte öyle LINQ:

var allTabs =
              içinde p
                  XElement.Parse(theXmlToParse).
                 
Öğeleri("PageLayouts").
                  Öğeleri("PageLayout")
              nerede (p.Attribute("adı").Value.Equals("xyzzy2"))
              p.Elements--dan m("Tabs").Öğeleri("Sekme")
              m seçin;

          Results.Text = dize.Boş;

          foreach (allTabs de var aTab)
          {
              Results.Text =
                  "Sekme sırası: " + aTab.Attribute("TabOrder").Değer + " |" +
                  "Sekme etiketi: " + aTab.Attribute("TabLabel").Değer + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Değer + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Değer + "r";
          }

Belgili tanımlık yukarıda içinde, bir dize değişkenine "theXmlToParse" değişkendir, ama sen-ebilmek kullanma belgili tanımlık yük() Eğer bir akış yöntemi.

"Sonuçlar" bir web formunda ve bu kodu yürütüldüğünde etikettir, Bu gibi görünüyor:

SNAGHTML11cd2e7c

Ben nasıl sonuçlar henüz sıralamak için çalıştı değil, Ben, bir gelecekte blog yazısı için bırakacağım.

</sonunda>

Benim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin