0
我在做下面的xml查詢時做錯了什麼?爲節點內的節點解析Xml C#
我試圖在這個xml中打印所有「AppUserModelID」值。 我深入到組,然後試圖循環通過組。有沒有更好的方法來做到這一點比使用長鑽取字符串來獲取組?
<LayoutModificationTemplate Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
<LayoutOptions StartTileGroupCellWidth="6" />
<DefaultLayoutOverride>
<StartLayoutCollection>
<defaultlayout:StartLayout GroupCellWidth="6" xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout">
<start:Group Name="Life at a glance" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
<start:Tile Size="2x2" Column="0" Row="0" AppUserModelID="microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.windowslive.calendar" />
<start:Tile Size="4x2" Column="2" Row="0" AppUserModelID="microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.windowslive.mail" />
<start:Tile Size="2x2" Column="0" Row="2" AppUserModelID="Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge" />
<start:Tile Size="2x2" Column="2" Row="2" AppUserModelID="Microsoft.Windows.Photos_8wekyb3d8bbwe!App" />
<start:Tile Size="2x2" Column="4" Row="2" AppUserModelID="Microsoft.Windows.Cortana_cw5n1h2txyewy!CortanaUI" />
<start:Tile Size="2x2" Column="0" Row="4" AppUserModelID="Microsoft.BingWeather_8wekyb3d8bbwe!App" />
<start:Tile Size="2x2" Column="2" Row="4" AppUserModelID="Microsoft.WindowsPhone_8wekyb3d8bbwe!CompanionApp.App" />
<start:Tile Size="2x2" Column="4" Row="4" AppUserModelID="Microsoft.Office.OneNote_8wekyb3d8bbwe!microsoft.onenoteim" />
</start:Group>
<start:Group Name="Play and explore" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
<start:Tile Size="4x2" Column="2" Row="2" AppUserModelID="Microsoft.BingNews_8wekyb3d8bbwe!AppexNews" />
<start:Tile Size="2x2" Column="0" Row="4" AppUserModelID="Microsoft.WindowsStore_8wekyb3d8bbwe!App" />
<start:Tile Size="2x2" Column="4" Row="4" AppUserModelID="Microsoft.MicrosoftOfficeHub_8wekyb3d8bbwe!Microsoft.MicrosoftOfficeHub" />
</start:Group>
<start:Group Name="" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
<start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.InternetExplorer.Default" />
<start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="VMware.Horizon.Client" />
<start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationID="Microsoft.Office.OUTLOOK.EXE.16" />
</start:Group>
<start:Group Name="" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
<start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="C:\Users\jason\Documents" />
<start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationID="Chrome" />
</start:Group>
</defaultlayout:StartLayout>
</StartLayoutCollection>
</DefaultLayoutOverride>
</LayoutModificationTemplate>
這裏是我的代碼:
XmlDocument doc = new XmlDocument();
doc.Load(@"C:\Users\Nick\Desktop\hi.xml");
//XmlNamespaceManager manager = new XmlNamespaceManager(doc.NameTable);
XmlNodeList groups = doc.DocumentElement.SelectNodes("/LayoutModificationTemplate/LayoutOptions/DefaultLayoutOverride/StartLayoutCollection/defaultlayout:StartLayout/start:Group"
//, manager
);
List<String> pinnedProgram = new List<String>();
foreach (XmlNode group in groups)
{
XmlNodeList titles = doc.DocumentElement.SelectNodes("/start:Tile");
foreach (XmlNode title in titles)
{
pinnedProgram.Add(title.Attributes["AppUserModelID"].Value);
}
}
}
你有沒有考慮(https://msdn.microsoft.com/en [LINQ到XML?] -us/library/system.xml.linq(v = vs.110).aspx) – Scott
@Scott我的代碼發佈時仍然有問題,它不讓我訪問「AppUserModelID」 – nlstack01