我有以下xml:
<root>
<Animals>
<Pet name ="Ruby">
<Owner name = "John Smith"/>
<Type name = "Dog"/>
<Breed name = "Labrador"/>
<Sex name = "Female"/>
<Desexed name = "Yes"/>
<Age name = "7 years"/>
</Pet>
<Pet name ="Charlie">
<Owner name = "John Q"/>
<Type name = "Dog"/>
<Breed name = "Pug"/>
<Sex name = "Female"/>
<Desexed name = "No"/>
<Age name = "2 Years"/>
</Pet>
</Animals>
</root>
我希望存储元素的名称及其名称的价值&#39;每个宠物的属性都是&#39;及其嵌套字典中的后代。我不知道字典是否是存储此信息的最佳方式,但如果我将其存储在字典中,我会将其存储在Dictionary<string, Dictionary<string, string>>
中,其中密钥是宠物名称(例如Ruby,Charlie)和嵌套字典的关键是每个属性名称(Owner,Type,Breed,Sex,Desexed,Age),值是name属性的值。谁能帮我这个?我发现LINQ真的很混乱。目前,我将其存储在XDocument
。
答案 0 :(得分:1)
这是你的意思吗?
var dictionary =
xd
.Descendants("Pet")
.ToDictionary(
x => x.Attribute("name").Value,
x => x.Elements()
.ToDictionary(
y => y.Name,
y => y.Attribute("name").Value));
我得到了这个结果:
答案 1 :(得分:1)
我会构建一个类'Pet'作为数据的模块,并将每个元素读入Pet类。然后,我会将宠物保存在阵列中。字典不是一个好的选择,因为宠物名称可能不是唯一的。