【发布时间】:2014-03-03 12:11:05
【问题描述】:
我正在开发 Windows Phone 8 应用程序:
我有这样的文件:
<array>
<dict>
<key>SubTopics</key>
<array>
<dict>
<key>ID</key>
<array>
<string>CD1</string>
<string>CD2</string>
<string>CD3</string>
<string>CD4</string>
</array>
<key>Title</key>
<string>Miscellaneous</string>
<key>Desc</key>
<string> this is just a text</string>
<key>HasItems</key>
<true/>
</dict>
<dict>
<key>ID</key>
<array>
<string>DDC1</string>
<string>DDC2</string>
<string>DDC3</string>
<string>DDC4</string>
<string>DDC5</string>
</array>
<key>Title</key>
<string>Miscellaneous One</string>
<key>Desc</key>
<string> this is just a text</string>
<key>HasItems</key>
<true/>
</dict>
</array>
<key>MainTitle</key>
<string>Data</string>
</dict>
<dict>
<key>SubTopics</key>
<array>
<dict>
<key>ID</key>
<array>
<string>SSD1</string>
<string>SS2</string>
<string>SS3</string>
<string>SS4</string>
</array>
<key>Title</key>
<string>Goblins</string>
<key>Desc</key>
<string> this is just a text</string>
<key>HasItems</key>
<true/>
</dict>
<dict>
<key>ID</key>
<array>
<string>ADC1</string>
<string>ADC2</string>
<string>ADC3</string>
<string>ADC4</string>
<string>DDC5</string>
</array>
<key>Title</key>
<string>Tracks</string>
<key>Desc</key>
<string> this is just a text</string>
<key>HasItems</key>
<true/>
</dict>
</array>
<key>MainTitle</key>
<string>Data Two</string>
</dict>
</array>
如何解析这个?
是这样的:
MainTitle
--SubTitle
---ID
---Desc
---Boolean Value
MainTitle
--SubTitle
---ID
---Desc
---Boolean Value
基本上是带有键和值数组列表的字典列表。
我试过这样但它不完整:
List<MyObject> topics = (from plist in doc.Root.Element("array").Elements("dict")
select new MyObject
{
MainTitle = (string)plist.Element("string"),
ListOfSubTitles = plist.Element("array")
.Elements("dict")
.Elements("string")
.Select(s => (string)s)
.ToList(),
ListOfIDs = plist.Element("array")
.Elements("dict")
.Elements("array")
.Elements("string")
.Select(s => (string)s)
.ToList()
}).ToList();
【问题讨论】:
-
您的 xml 不好,因为它假定元素的某些特定顺序
key,value,key,value....。如果您没有从外部站点获取它,请更改它... -
@L.B 不正确,我已经在 JAVA 中解析了相同的 Xml,只是我被困在如何在 c# 中执行它
-
Goofy,我不是说它无效,我说的是,在 xml 中依靠元素的顺序是一种不好的做法。更好的方法是列出
<KeyValue><Key>...</Key><Value>....</Value></KeyValue> -
@L.B 是的,但我必须这样做,没有其他选择,你能帮帮我吗?
-
这是来自 iOS 的 pList 文件 - 他正在将 iPhone 应用程序转换为 Windows - 就像我一样 - 感谢您提出问题 :-)
标签: c# wpf linq parsing windows-phone-8