将XML解析为元组

时间:2016-04-12 10:45:46

标签: c# linq

LINQ新手。 示例xml:

val waypointList = list.checkItemsAre<Waypoint>() ?: return null

我想将其解析为元组:

<item name="XX">
    <inside type="A"/>
    <inside type="B" />
</item>
<item name="YY">
    <inside type="C"/>
    <inside type="D" />
</item>

到目前为止,我可以使用以下代码在线检索每个项目的第一行:(XX, A) (XX, B) (YY, C) (YY, D) (XX, A)

(YY, C)

我相信我应该将var selected = (from item in doc.Root.Elements() let inside = item.Element(XName.Get("inside", item.GetDefaultNamespace().NamespaceName)) select Tuple.Create(item.Attribute("name").Value, inside.Attribute("type").Value)).ToList(); 修改为item.Element,但到目前为止还没有运气。

2 个答案:

答案 0 :(得分:1)

, IFoo

您可以使用var tuples = XElement.Parse(xml).Descendants("item") .SelectMany(item => item.Elements() .Select(inside => Tuple.Create(item.Attribute("name"), inside.Attribute("type")))); 来帮助您从单个元素构建元组集合。

答案 1 :(得分:1)

而不是使用item.Element,您应该遍历item.Elements

var selected = (from item in doc.Root.Elements()
                from inside in item.Elements("inside")
                select Tuple.Create(
                       item.Attribute("name").Value,
                       inside.Attribute("type").Value)
               ).ToList();