Phân tích cú pháp XML với LINQ

Đây là một ví dụ nhanh chóng bằng cách sử dụng LINQ để phân tích một số  XML và nhận được tại ngọt, ngọt trong đó thuộc tính.

Đây là XML tôi muốn phân tích cú pháp:

<?Phiên bản XML = "1.0" Encoding = "utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <PageLayout tên = "xyzzy">
      <Tab>
        <Tab TabOrder = "1" TabLabel = "x" SharePointContentType = "một" AdditionalConstraints = "ac1" />
        <Tab TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Tab>
    </PageLayout>

    <PageLayout tên = "xyzzy2">
      <Tab>
        <Tab TabOrder = "100" TabLabel = "x" SharePointContentType = "một" AdditionalConstraints = "ac1" />
        <Tab TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
        <Tab TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Tab>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Tôi muốn xây dựng một số tab tại thời gian chạy của phân tích ở trên.  Tab của tôi phụ thuộc vào một bố cục trang.  Nếu cách bố trí trang của tôi tên là "xyzzy2" sau đó, tôi muốn để có được các tab 100, 101 và 103 (các tab trong <PageLayout tên = "xyzzy2">).

Đây là LINQ nào đó:

var allTabs =
              từ p trong
                  XElement.Parse(theXmlToParse).
                 
Yếu tố("PageLayouts").
                  Yếu tố("PageLayout")
              nơi (p.Attribute("tên").Value.Equals("xyzzy2"))
              từ m p.Elements("Tab").Yếu tố("Tab")
              chọn m;

          Results.Text = chuỗi.Có sản phẩm nào;

          foreach (var aTab trong allTabs)
          {
              Results.Text =
                  "Thứ tự tab: " + aTab.Attribute("TabOrder").Giá trị + " |" +
                  "Tab Label: " + aTab.Attribute("TabLabel").Giá trị + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Giá trị + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Giá trị + "r";
          }

Trong các bên trên, biến "theXmlToParse" là một biến Chuỗi, nhưng bạn có thể sử dụng tải() Các phương pháp trên một dòng nếu bạn thích.

"Kết quả" là một nhãn trên một biểu mẫu web và khi mã này thực hiện, nó trông như thế này:

SNAGHTML11cd2e7c

Tôi đã không làm việc ra làm thế nào để sắp xếp các kết quả chưa, Vì vậy, tôi sẽ rời khỏi đó cho một bài đăng blog trong tương lai.

</kết thúc>

Đăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

Để lại câu trả lời

Địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *