解析 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("選項卡").元素("選項卡")
              選擇 m;

          Results.Text = 字串。空;

          foreach (在 allTabs 中的 var aTab)
          {
              Results.Text =
                  "Tab 鍵順序: " + aTab.Attribute(""TabOrder).價值 + " |" +
                  "選項卡標籤: " + aTab.Attribute(""TabLabel).價值 + " | " +
                  "SharePointContentType: " + aTab.Attribute(""SharePointContentType).價值 + " | " +
                  "AdditionalConstraints: " + aTab.Attribute(""AdditionalConstraints).價值 + ""r;
          }

在上面, "theXmlToParse"變數是字串變數, 但您可以使用負載() 如果你喜歡一個流上的方法.

"結果"是一個 web 表單上,當這段代碼執行時的標籤, 它看起來像這樣:

SNAGHTML11cd2e7c

我沒找出如何尚未對結果進行排序, 所以我會把這個未來的博客.

</結束>

訂閱我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

留言

您的電子郵件地址不會被公開. 必需的地方已做標記 *