【发布时间】:2014-07-19 21:09:40
【问题描述】:
我正在开发 Windows Phone 8 应用程序,
我有一些看起来像这样的用户界面:
主项 A --- 将其描述和子项列表作为键值
主项 B --- 有它的 desc 和子项列表作为键值
主项 C --- 有它的描述和子项列表作为键值
现在点击 A 移动到下一页,该页面将显示其描述及其子项目。
点击主条目 A
主要项目A的描述
sub item 1 --- 点击这个显示它的描述 子项 2 --- 单击此显示其说明
下面是 Xml 的样子:
<plist version="1.0">
<dict>
<key>Category</key>
<array>
<dict>
<key>Name</key>
<string>A</string>
<key>Description</key>
<string>Some data</string>
<key>SubItems</key>
<array>
<dict>
<key>Description</key>
<string>Some data</string>
<key>Name</key>
<string>One</string>
</dict>
<dict>
<key>Name</key>
<string>Two</string>
<key>Description</key>
<string>Some data</string>
</dict>
</array>
</dict>
<dict>
<key>Name</key>
<string>B</string>
<key>Description</key>
<string>Some data</string>
<key>SubItems</key>
<array>
<dict>
<key>Description</key>
<string>Some data</string>
<key>Name</key>
<string>One</string>
</dict>
<dict>
<key>Name</key>
<string>Two</string>
<key>Description</key>
<string>Some data</string>
</dict>
</array>
</dict>
如何解析这个例子?
更新
我已经这样解决了:
Dictionary<string, List<Tricks>> plistData =
doc.Root.Element("dict").Element("array").Elements("dict")
.Select(GetValues)
.ToDictionary(v => (string)v["Name"],
v => v["SubItems"]
.Elements("dict").Select(Parse).ToList());
static Tricks Parse(XElement dict)
{
var values = GetValues(dict);
return new Tricks
{
SubTitle = (string)values["Name"],
SubTitleDescription = (string)values["Description"]
};
}
static Dictionary<string, XElement> GetValues(XElement dict)
{
return dict.Elements("key")
.ToDictionary(k => (string)k, k => (XElement)k.NextNode);
}
在上面我能得到除了except MainTitle Description之外的所有东西,你能帮我纠正一下吗。
【问题讨论】:
标签: c# wpf windows-phone-8 xml-parsing linq-to-xml