使用xpath选择元素中的所有属性并将其添加到列表中

时间:2010-07-29 08:26:05

标签: c# xml xpath

我的xml:

<Scenes>
    <Scene Index="0" Channel="71" Name="Scene1" />
    <Scene Index="1" Channel="71" Name="Scene2" />
    <Scene Index="2" Channel="71" Name="Scene3" />        
  </Scenes>

我的代码:

var elements = new List<List<string>>();
var attributtes = new List<string>();
XPathExpression expr1 = nav.Compile("//Scene/@*");
XPathNodeIterator iterator1 = nav.Select(expr1);
while (iterator1.MoveNext())
{
  XPathNavigator nav2 = iterator1.Current.Clone();
  attributtes.Add(nav2.Value);
}

这会将所有元素的所有属性添加到“attributtes”列表中。

但是,如何仅将属性添加到列表“attributtes”,然后将该列表添加到“元素”?所以我得到一个包含元素列表的元素列表。 希望我对自己想要完成的任务有足够的了解。

1 个答案:

答案 0 :(得分:2)

这是你的答案:

var elements = new List<List<string>>();

// this selects all 'Scene' elements
XPathNodeIterator elem = nav.Select("//Scene");
while(elem.MoveNext())
{
    XPathNavigator elemNav = elem.Current.Clone();

    var attributes = new List<string>();

    // now select all attributes of this particular 'Scene' element
    XPathNodeIterator attr = elemNav.Select("@*");
    while(attr.MoveNext())
    {
        attributes.Add(attr.Current.Value);
    }

    elements.Add(attributes);
}

这将创建一个元素列表,每个元素都有一个单独的属性列表。