将 XML 转换为字典
本文关键字:字典 转换 XML | 更新日期: 2023-09-27 18:34:19
我正在转换这个XML:
<root>
<item id="1" level="1" />
<item id="2" level="1">
<item id="3" level="2" />
<item id="4" level="2" >
<item id="5" level="3">
<item id="6" level="4" />
</item>
</item>
<item id="7" level=2" />
</item>
</root>
使用这个进入字典:
XElement root = XElement.Parse(strSerializedoutput);
Dictionary<int, Pair> list = root.Descendants("item").ToDictionary(x => (int)x.Attribute("id"), x =>
{
var pId = x.Parent.Attribute("id");
var depthLevel = x.Attribute("level");
if (pId == null)
{
return new { parentID = 0, level = (int)depthLevel };
}
else
{
return new { parentID = (int)pId, level = (int)depthLevel };
}
});
其中对是:
public class Pair
{
int parentID;
int level;
}
输出我想成为:
ID | ParentID | level
------------------------
1 NULL 1
2 NULL 1
3 2 2
4 2 2
5 4 3
6 5 4
7 2 2
但是我收到一个错误说
错误 35 无法隐式转换类型 'System.Collections.Generic.Dictionary int,AnonymousType#1' to 'System.Collections.Generic.Dictionary int,ProposalSystem.handlers.main.Pair'
XElement root = XElement.Parse(strSerializedoutput);
Dictionary<int, Pair> list = root.Descendants("item")
.ToDictionary(x => (int) x.Attribute("id"),
x => {
var pId = x.Parent.Attribute("id");
var depthLevel = x.Attribute("level");
return pId == null ? new Pair { parentID = 0, level = (int)depthLevel } :
new Pair { parentID = (int)pId, level = (int)depthLevel };
});
public class Pair
{
public int parentID;
public int level;
}
您的字典类型为:
Dictionary<int, Pair>
然而,对于元素类型,您返回的不是Pair
而是此匿名类型:
return new { parentID = 0, level = (int)depthLevel };