下面是一個簡單的例子,使用 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 表單上,當這段代碼執行時的標籤, 它看起來像這樣:
我沒找出如何尚未對結果進行排序, 所以我會把這個未來的博客.
</結束>
跟我在 Twitter 上 http://www.twitter.com/pagalvin