Как перечислить только узлы XML, расположенные непосредственно под корневым узлом


Например, как я могу перечислить player1, player2, и player3 в .NET 4.0 ListView?

<?xml version="1.0"?>
<players>
  <player1>
    <name>playername</name>
    <age>18</age>
    <gender>m</gender>
  </player1>
  <player2>
    <name>playername</name>
    <age>18</age>
    <gender>m</gender>
  </player2>
  <player3>
    <name>playername</name>
    <age>18</age>
    <gender>m</gender>
  </player3>
</players>
1 2

1 ответ:

С помощью Linq to XML (который я предлагаю вам использовать с .Net 4.0) вы можете получить их:

var xdoc = XDocument.Load(path_to_xml);
var players = xdoc.Root.Elements();

Или получение атрибутов имени:

var names = from p in xdoc.Root.Elements()
            select (string)p.Element("name");

Польза от использования XmlDocument отсутствует, поскольку он также загружает все xml в память. Если вы хотите получить только имена xml-элементов:

var players = from p in xdoc.Root.Elements()
              select p.Name.LocalName; // player1, player2, player3